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

    +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
    16. 16
    17. 17
    18. 18
    public void reset() {
    			if (types.size() > 0) {
    				for (int i = 0; i < types.size(); i++) {
    					if (types.get(i).getChequeTypeId().equals(1L)) {
    						if (parent.getItemCount() > i
    								&& parent.getSelectedIndex() != i) {
    							parent.setSelectedIndex(i);
    						}
    						if (selectedType == null)
    							selectedType = getElementAt(i).toString();
    						return;
    					}
    				}
    				parent.setSelectedIndex(0);
    				if (selectedType == null)
    					selectedType = getElementAt(0).toString();
    			}
    }

    Код из реального java SE проекта:)
    types это ArrayList со всеми типами валют; в данном методе устанавливается валюта по умолчанию - рубли:)

    vov4a, 10 Сентября 2010

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

    +69

    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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    /**
         * Инициализация набора действий, определенных для контейнера.
         * @param context
         * @throws DfException
         */
        protected void initializeTransitions(EditorContext context) throws DfException{
            AbstractDocumentModel documentModel = getDocumentModel();
            AbstractState state = documentModel.getLifeCyclePolicy(context).getState(context);
            
            if (!documentModel.isNew())
            {
                addTransition(TransitionName.CREATE_DETACHED_COMMISSION, TransitionHandler.CREATE_DETACHED_COMMISSION);
                addTransition(TransitionName.PRINT, TransitionHandler.PRINT);
            }
            AbstractTaskModel taskModel = context.getTaskModel();
            if (taskModel  instanceof ReviewDocumentTaskModel && !(taskModel  instanceof ExpeditionaryProcessingDocumentTaskModel)){
    //                 && !(taskModel instanceof AttachFileAndReviewDocumentTaskModel)){
    
                      
            if ((taskModel instanceof AttachFileToDocumentTaskModel || taskModel instanceof WaitForScanningTaskModel) && ((documentModel instanceof InternalDocumentModel) || (documentModel instanceof OutgoingDocumentModel) || (documentModel instanceof IncomingDocumentModel)))
                addTransition(TransitionName.PRINT_BARCODE, TransitionHandler.PRINT_BARCODE);
    
            if (taskModel instanceof AbstractDocumentTaskModel){
                if ( state instanceof AbstractDraftState ){
                    if( state instanceof NewProtocolDraftState)
                        addTransition(ContainerAction.ACTION_NAME, TransitionName.SEND_DRAFT, TransitionName.REGISTER, TransitionHandler.SEND_DRAFT);
                    else if (state instanceof NewDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionHandler.SEND_DRAFT);
                    if (state instanceof AbstractApprovalDraftState)
                        addTransition(TransitionName.REWORK_DRAFT, TransitionHandler.REWORK_DRAFT);
                    if (state instanceof AnalyseDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_ANALYSE, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ControlDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_CONTROL, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ApproveDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_APPROVAL, TransitionHandler.SEND_DRAFT);
                    if (state instanceof SignDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_SIGN, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ExternalApproveDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_APPROVAL, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ControlApproveDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_CONTROLED, TransitionHandler.SEND_DRAFT);
                    if (state instanceof ConfirmationDraftState)
                        addTransition(TransitionName.SEND_DRAFT, TransitionDescription.SEND_DRAFT_CONFIRM, TransitionHandler.SEND_DRAFT);
                }
              }
            }
            
    .................. несколько страниц такого кода ...........................
          
            if (state instanceof AbstractApprovalDraftState ||
                state instanceof ReworkDraftState ||
                state instanceof NewDocumentState ||
                state instanceof RegisterDocumentState ||
                state instanceof ReviewDocumentState ||
                state instanceof ExecuteDocumentState){
            	addTransition(TransitionName.SAVE, TransitionHandler.SAVE);
            }
    
            super.initializeTransitions(context);
        }

    Автор решил захардкодить в одном месте логику переходов между всеми состояниями всех жизненных циклов всех документов, реализованных в системе документооборота. Получился говнокод-BPM-движок. А внешне код очень даже солидный: с константами и комментариями... и названиями классов вроде: ExpeditionaryProcessingDocumentTaskModel

    dab84, 06 Сентября 2010

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

    +80

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    try {
         while (sender.isAlive()) {
             this.sleep(100);//static field usage(!)
         }
    } catch (java.lang.InterruptedException e) {
         Log.log(Log.ERROR, this, e);
    }

    типа Thread.join() не наш метод.

    qnikst, 04 Сентября 2010

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

    +95

    1. 1
    2. 2
    3. 3
    4. 4
    result = result == 0 ? tempResult
                            : (tempResult == 0 ? result
                            : (result == tempResult ? result : result
                            * tempResult));

    utinger, 02 Сентября 2010

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

    +79

    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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    /**
             * Convenience method call with one parameter
             * 
             * @param method name of method to call
             * @param p0 method's parameter
             * @return deserialized method return value
             * @throws XMLRPCException
             */
            public Object call(String method, Object p0) throws XMLRPCException {
                    Object[] params = {
                            p0,
                    };
                    return callEx(method, params);
            }
            
            /**
             * Convenience method call with two parameters
             * 
             * @param method name of method to call
             * @param p0 method's 1st parameter
             * @param p1 method's 2nd parameter
             * @return deserialized method return value
             * @throws XMLRPCException
             */
            public Object call(String method, Object p0, Object p1) throws XMLRPCException {
                    Object[] params = {
                            p0, p1,
                    };
                    return callEx(method, params);
            }
    
    //.......................................................
    //.....................cut.............................
    //.......................................................
    
            /**
             * Convenience method call with seven parameters
             * 
             * @param method name of method to call
             * @param p0 method's 1st parameter
             * @param p1 method's 2nd parameter
             * @param p2 method's 3rd parameter
             * @param p3 method's 4th parameter
             * @param p4 method's 5th parameter
             * @param p5 method's 6th parameter
             * @param p6 method's 7th parameter
             * @return deserialized method return value
             * @throws XMLRPCException
             */
            public Object call(String method, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6) throws XMLRPCException {
                    Object[] params = {
                            p0, p1, p2, p3, p4, p5, p6,
                    };
                    return callEx(method, params);
            }
    
    
            /**
             * Convenience method call with eight parameters
             * 
             * @param method name of method to call
             * @param p0 method's 1st parameter
             * @param p1 method's 2nd parameter
             * @param p2 method's 3rd parameter
             * @param p3 method's 4th parameter
             * @param p4 method's 5th parameter
             * @param p5 method's 6th parameter
             * @param p6 method's 7th parameter
             * @param p7 method's 8th parameter
             * @return deserialized method return value
             * @throws XMLRPCException
             */
            public Object call(String method, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7) throws XMLRPCException {
                    Object[] params = {
                            p0, p1, p2, p3, p4, p5, p6, p7,
                    };
                    return callEx(method, params);
            }

    http://code.google.com/p/android-xmlrpc/source/browse/trunk/XMLRPC/src/org/xmlrpc/android/XMLRPCClient.java

    striker, 31 Августа 2010

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

    +84

    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
    for (int hasFirstPass = 0; hasFirstPass <= 1; ++hasFirstPass) {
                    for (int firstPassOffsetLeft = 0; firstPassOffsetLeft <= hasFirstPass; ++firstPassOffsetLeft) {
                        for (int firstPassOffsetRight = 0; firstPassOffsetRight <= hasFirstPass; ++firstPassOffsetRight) {
                            for (int firstPassOffsetTop = 0; firstPassOffsetTop <= hasFirstPass * 2; ++firstPassOffsetTop) {
                                for (int firstPassOffsetBottom = 0; firstPassOffsetBottom <= hasFirstPass * 2; ++firstPassOffsetBottom) {
                                    for (int hasSecondPass = 0; hasSecondPass <= 1; ++hasSecondPass) {
                                        for (int secondPassOffsetLeft = 0; secondPassOffsetLeft <= hasSecondPass * 2; ++secondPassOffsetLeft) {
                                            for (int secondPassOffsetRight = 0; secondPassOffsetRight <= hasSecondPass * 2; ++secondPassOffsetRight) {
                                                for (int secondPassOffsetTop =
                                                        0; secondPassOffsetTop <= hasSecondPass; ++secondPassOffsetTop) {
                                                    for (int secondPassOffsetBottom =
                                                            0; secondPassOffsetBottom <= hasSecondPass; ++secondPassOffsetBottom) {
    
                                                        // ... some processing code
                                                        
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

    Есть некоторая обработка прямоугольника, проводящаяся в два этапа. Причём на первом этапе отступ от правого и левого края может быть не более 1, от верхнего и нижнего не более 2. На втором этапе наоборот. Каждый из этапов может отсутствовать, в таком случае естественно перебирать варианты отступа для этого этапа не нужно.

    Этот код перебирает все возможные варианты такой обработки.

    burdakovd, 27 Августа 2010

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

    +121

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if ((((o-'0')|('7'-o)) >= 0) && (((n-'0')|('3'-n)) >= 0)) {
                        return (n - '0') * 64 + (m - '0') * 8 + (o - '0');
                    }
                    unread();
                    return (n - '0') * 8 + (m - '0');
                }
                unread();
                return (n - '0');

    смайлоговнокод от Chen-Lieh Huang, Alan Liu
    /* @(#)Pattern.java 1.113 07/05/07
    http://kickjava.com/src/java/util/regex/Pattern.java.htm
    окончание серии #3976 #3975 #3940 #3998 #3999 #4007 #4054

    3.14159265, 25 Августа 2010

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

    +83

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    [code=java]
    try {
          Folder folder = openFolder();
          processFolder(folder);
        } catch (MessagingException ex) {
          Folder folder = openFolder();
          processFolder(folder);
        }
    [/code]

    Если IMAP временно недоступен -- программа попробует снова. Если со второго раза не получилось -- тогда все.
    Жаль, что попытки всего две, а не восемь. Было бы круто.

    Этот код работал в живом проекте.

    Анонимус, 24 Августа 2010

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

    +70

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    /**
     * Окно, которое реагирует на нажатие клавиши Esc
     * определенным образом (например, окно закрывается).
     * Для этого в потомках класса необходимо реализовать метод
     * doEscapeKeyAction(), который будет вызываться при нажатии
     * клавиши ESC.
     */
    public abstract class JEscFrame extends ProfilableFrame {
    ...
    }

    borka, 22 Августа 2010

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

    +119

    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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    /**
         * Parses inlined match flags and set them appropriately.
         */
        private void addFlag() {
            int ch = peek();
            for (;;) {
                switch (ch) {
                case 'i':
                    flags |= CASE_INSENSITIVE;
                    break;
                case 'm':
                    flags |= MULTILINE;
                    break;
                case 's':
                    flags |= DOTALL;
                    break;
                case 'd':
                    flags |= UNIX_LINES;
                    break;
                case 'u':
                    flags |= UNICODE_CASE;
                    break;
                case 'c':
                    flags |= CANON_EQ;
                    break;
                case 'x':
                    flags |= COMMENTS;
                    break;
                case '-': // subFlag then fall through
                    ch = next();
                    subFlag();
                default:
                    return;
                }
                ch = next();
            }
        }
    
        /**
         * Parses the second part of inlined match flags and turns off
         * flags appropriately.
         */
        private void subFlag() {
            int ch = peek();
            for (;;) {
                switch (ch) {
                case 'i':
                    flags &= ~CASE_INSENSITIVE;
                    break;
                case 'm':
                    flags &= ~MULTILINE;
                    break;
                case 's':
                    flags &= ~DOTALL;
                    break;
                case 'd':
                    flags &= ~UNIX_LINES;
                    break;
                case 'u':
                    flags &= ~UNICODE_CASE;
                    break;
                case 'c':
                    flags &= ~CANON_EQ;
                    break;
                case 'x':
                    flags &= ~COMMENTS;
                    break;
                default:
                    return;
                }
                ch = next();
            }
        }

    очередной кусок творчества Chen-Lieh Huang, Alan Liu
    /* @(#)Pattern.java 1.113 07/05/07
    * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
    * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
    */

    продолжение #3976 #3975 #3940 #3998 #3999 #4007

    3.14159265, 21 Августа 2010

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