1. 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)
  2. SQL / Говнокод #4177

    −865

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    FUNCTION f_decncity_arr_find_base(p_gds_id IN NUMBER, p_date IN DATE DEFAULT SYSDATE) RETURN VARCHAR2 IS
        v_denc15 NUMBER; v_k0 NUMBER; v_k1 NUMBER;
    BEGIN
        decncity_arr_find_base(p_gds_id, p_date, v_denc15, v_k0, v_k1);
        RETURN 'DENC15!=@'||TO_CHAR(v_denc15)||'@ K0!=@'||TO_CHAR(v_k0)||'@ K1!=@'||TO_CHAR(v_k1)||'@';
    END;

    Так и не поняли, что это....

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

    Комментарии (3)
  3. PHP / Говнокод #4176

    +158

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if ($_REQUEST['name']){
    	$nameProduct = $_REQUEST['name'];
    	$products = $db->products($_REQUEST['name']);
    } else {
    	$products = 'error';	
    }
    
    if ($products == 'error'){
    	$http->redirect('index.php');
    }

    Из частного проекта.
    Во-первых почему-бы не использовать $nameProduct второй раз вместо $_REQUEST['name']?
    Во-вторых вместо $products = 'error'; можно сразу было сделать редирект, т.к. все последующие использования $products не имеют смысла, если редирект выполнен.

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

    Комментарии (5)
  4. PHP / Говнокод #4175

    +164

    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
    if($result){
    				list($Title_block, $Sections, $Description,$Moderators) = mysql_fetch_row($result)
    				//$row = mysql_fetch_assoc($result)
    				echo "<form>\n";
    					echo "\t<table border='4' cellspacing='1' cellpadding='1' width='1000' height='60'>\n";
    						echo "\t\t<tr>\n";
    							echo "\t\t\t<td colspan='5' bgcolor='gray' align='leftmargin'>$Title_block</td>\n";
    						echo "\t\t</tr>\n";
    				do{
    					echo "\t\t<tr>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0'></td>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0' width='500'>Форум</td>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0'>Тем</td>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0'>Сообщений</td>\n";
    						echo "\t\t\t<td bgcolor='#A0A0A0'>Последних сообщений</td>\n";
    					echo "\t\t</tr>\n";
    					echo "\t\t<tr>\n";
    						echo "\t\t\t<td bgcolor='##D0D0D0'><img src='mus.png'></td>\n";
    						echo "\t\t\t<td bgcolor='#D0D0D0' width='500' class='row4'>\n";
    							echo "\t\t\t\t<b><a href='Click' style='color:black;'>$Sections</a></b>\n";
    							echo "\t\t\t\t<br />$Description<br />Модераторы: $Moderators</td>\n";
    						echo "\t\t\t<td bgcolor='#D0D0D0'></td>\n";
    						echo "\t\t\t<td bgcolor='#D0D0D0'></td>\n";
    						echo "\t\t\t<td bgcolor='#D0D0D0'></td>\n";
    					echo "\t\t</tr>\n";
    				}while(list($Title_block, $Sections, $Description,$Moderators) = mysql_fetch_row($result));
    					echo "\t</table>\n";
    				echo "</form>\n";

    Часть одного самописного форума

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

    Комментарии (12)
  5. C# / Говнокод #4174

    +129

    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
    private const int _multiple_cols = 0x0000060D;  //0001000001101 - (Multiple view)
    private const int _single_cols = 0x000007F1;	//0001111110001 - (Single view)
    
    private void SetGridColumnVisibility()
    {
    	int bits = _view_type == NotificationContactViewType.Multiple ? _multiple_cols : _single_cols;
    	DataControlFieldCollection cols = gvContacts.Columns;
    	DataControlField col;
    	for (int i = 0; i < cols.Count; i++)
    	{
    		col = cols[i];
    		int bit = (int)Math.Pow(2, i);
    		col.Visible = ((bits & bit) == bit);
    	}
    }

    Интересный способ установки видимости колонкам в гриде :)

    olldman, 05 Сентября 2010

    Комментарии (27)
  6. PHP / Говнокод #4173

    +144

    1. 1
    HTML разметка вот этого форума (http://science-noir.kzforum.info/forum.htm) доставляет настоящее эстетическое наслаждение :-D

    ageron, 05 Сентября 2010

    Комментарии (7)
  7. PHP / Говнокод #4172

    +168

    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
    define('Min2Sec',60);
    define('Hour2Sec',3600);
    define('Day2Sec',86400);
    define('int','integer');
    define('real','float');
    define('bool','boolean');
    define('str','string');
    define('mix','array');
    define('intmix','int_mix');
    define('realmix','real_mix');
    define('boolmix','bool_mix');
    define('strmix','str_mix');
    define('obj','object');
    define('nil','null');

    Из ядра одной русской CMS, писал видимо Pascal'ист

    Мартин, 05 Сентября 2010

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

    +134

    1. 1
    http://youex.ru/skins/default/pages/search/

    В продолжение =)

    hybroid, 05 Сентября 2010

    Комментарии (10)
  9. 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)
  10. Куча / Говнокод #4169

    +121

    1. 1
    2. 2
    http://habrahabr.ru/blogs/algorithm/103513/
    Советую всем посмотреть, очень воодушевляет.

    А теперь по теме, вторая часть видео ( http://video.yandex.ru/users/ya-events/view/128/?cauthor=ya-events&cid=10 ) 44:44 .
    Александр Александрович: "У указателей не нужно определять операцию сравнения [....] равенство есть, а неравенства нет.
    [..] Вы не можете теперь создать множество. Точнее можете, но оно будет очень медленным."
    Какое-то чудило: " ээ, ну если вести хэшировние, и операцию equals, как в Java сделано"..
    Интересно, как он хеширование сделает, если две сущности можно сравнивать только на равенство?
    Да, и ещё, сразу виден развращённый( хешированием ) неокрепший детский мозг - видимо никогда не слышал про двоичные деревья поиска, что уже говорить по красно-чёрные деревья.

    P.S. Где тут куча? это же Pascal

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

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