1. Java / Говнокод #11477

    +76

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    /* ------------------------------------------------------------ */
        private boolean isJspServlet ()
        {
            if (_servlet == null)
                return false;
            
            Class c = _servlet.getClass();
            
            boolean result = false;
            while (c != null && !result)
            {
                result = isJspServlet(c.getName());
                c = c.getSuperclass();
            }
            
            return result;
        }
        
        
        /* ------------------------------------------------------------ */
        private boolean isJspServlet (String classname)
        {
            if (classname == null)
                return false;
            return ("org.apache.jasper.servlet.JspServlet".equals(classname));
        }

    Копался в исходниках Jetty

    konsoletyper, 26 Июля 2012

    Комментарии (25)
  2. Java / Говнокод #11451

    +75

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    private void executeUiOperation(final UiOperation operation, final Boolean documentReadOnly) {
            boolean readOnly = !edit;
            if (documentReadOnly != null) {
                readOnly |= documentReadOnly;
            }
    //....

    Кручу-верчу запутать хочу...

    ingenuus, 20 Июля 2012

    Комментарии (14)
  3. Java / Говнокод #11447

    +107

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    @Inject
    protected MainWindowController(
    		final SessionController session,
    		final QueueController queueController,
    		final MachineController machineController,
    		final PrintController printController,
    		final MainWindow window,
    		final UIHandler uiHandler,
    		final ImageCache imageCache,
    		final EventBus bus,
    		final ActiveOrderHolder orderHolder,
    		final ApiClientAsync apiClient,
    		final ReferenceDataCache dataCache,
    		@SvnRevision final int svnRevision) throws IOException {

    someone, 20 Июля 2012

    Комментарии (17)
  4. Java / Говнокод #11441

    +74

    1. 1
    2. 2
    3. 3
    //code...
    item.setInUse((map.getnStreamActive().equals("1") ? true : false));
    //...code

    Писал тим лид одного из вендоров проекта.
    nStreamActive - Integer

    ingenuus, 19 Июля 2012

    Комментарии (17)
  5. Java / Говнокод #11420

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    private static BigDecimal ZERO;
    private static BigDecimal ONE;
    private static BigDecimal TWO;
    private static BigDecimal FIVE;
    private static BigDecimal FOUR;
    private static BigDecimal SEVEN;
    public static BigDecimal SMALLDECIMAL;
    private static BigDecimal THREEHUNDRED;

    http://multilevellayout.googlecode.com/svn-history/r13/trunk/MultilevelLayoutPlugin/src/multilevelLayoutPlugin/MultilevelLayoutAlgorithm.java

    someone, 15 Июля 2012

    Комментарии (20)
  6. Java / Говнокод #11412

    +74

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    if (scope.equals("page")) {
        beanObject = context.getAttribute(bean);
    } else {
        if (scope.equals("request")) {
            beanObject = context.getRequest().getAttribute(bean);
        } else {
            if (scope.equals("session")) {
                beanObject = context.getSession().getAttribute(bean);
            } else {
                if (scope.equals("context")) {
                    beanObject = context.getServletContext().getAttribute(bean);
                }
            }
        }
    }

    Eyeless, 14 Июля 2012

    Комментарии (14)
  7. Java / Говнокод #11404

    +70

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if (s.startsWith("job."))
    {
        s = s.trim().replaceFirst("job\\.", "");
        String name = s.split("\\.")[0];
        String paramName = s.split("\\.")[1];
        // Ещё немного говнокода, не сильно интересного
    }

    konsoletyper, 12 Июля 2012

    Комментарии (1)
  8. Java / Говнокод #11403

    +68

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    public abstract class AbstractJob implements Job
    {
        private static ConcurrentHashMap<String, Boolean> mutexes = new ConcurrentHashMap<String, Boolean>();
    
        public abstract void job(JobExecutionContext jec, Logger logger) throws JobExecutionException;
    
        public void execute(JobExecutionContext jec) throws JobExecutionException
        {
            Logger logger = LoggerLocator.getLogger(this.getClass().getSimpleName());
            if (mutexes.containsKey(this.getClass().getSimpleName()))
            {
                logger.info("Job "+jec.getJobDetail().getName()+" already running");            
            }
            else
            {
                try
                {
                    mutexes.put(this.getClass().getSimpleName(), true);
                    job(jec, logger);
                }
                finally
                {
                    mutexes.remove(this.getClass().getSimpleName());
                }
            }
        }
    }

    Race condition и передача логгера в параметрах очень порадовали. А ведь вместо написания кривого велосипеда можно было просто @DisallowConcurrentExecution

    konsoletyper, 12 Июля 2012

    Комментарии (0)
  9. Java / Говнокод #11401

    +76

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    public static void main(String[] args) {      
    List<String> parameters = new ArrayList<String>();
    
    if (args.length > 1) {
             int count = 0;
             for (String arg : args) {
                if (count == 0) {
                   count++;
                   continue;
                }
                parameters.add(arg);
             }
    }
    ...

    Ах Индия, Индия...
    (все имена переменных изменены, все совпадения - исключительно случайны)

    Taru4, 12 Июля 2012

    Комментарии (7)
  10. Java / Говнокод #11400

    +117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    public class Foo { 
     public Foo() {
      System.out.println("constructing foo: " + this);
      throw new RuntimeException();
     }
     public void doEvil() {
      System.out.println("Evil!Evil!Evil");
     }
    }
    
    public class MyFoo extends Foo {
     public static Foo x;
     @Override
     protected void finalize() throws Throwable {
      x = this;
     } 
    }
    
    try {
     Foo x = new MyFoo();
    } catch(Exception e) {
     System.out.println(""+e);
    }
    System.gc();
    System.runFinalization();
    System.out.println("MyFoo instance: " + MyFoo.x);
    MyFoo.x.doEvil();

    Вот так бесстрашные хакеры получают доступ к методу экземпляра объекта, конструктор которого выбрасывает исключение, а потом жалуются, что, мол, Java - решето.

    А теперь вопрос на засыпку: как сделать то же самое, не используя finalize и gc?

    someone, 12 Июля 2012

    Комментарии (9)