1. Pascal / Говнокод #7817

    +90

    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
    Procedure TfMain.CheckButtonsStatus;
    begin
      // Если есть кто-то в персональной очереди, то возобновить активна
      if (dMain.PersonalQueueQuery.RecordCount > 0) then
        TImageButton(mButtons[6]).mlabel.Enabled := true
      else
        TImageButton(mButtons[6]).mlabel.Enabled := False;
    
      // 'приглашен', 3, 'оповещен', 4, 'оповещен', 5, 'прием начат')
      if (dMain.StateQuery.FieldValues['state'] = 'свободно') then
      begin
        TImageButton(mButtons[0]).mlabel.Enabled := False;
        TImageButton(mButtons[1]).mlabel.Enabled := False;
        if dMain.CommonQueueQuery.RecordCount > 0 then
          TImageButton(mButtons[2]).mlabel.Enabled := true
        else
          TImageButton(mButtons[2]).mlabel.Enabled := False;
    
        TImageButton(mButtons[3]).mlabel.Enabled := False;
        TImageButton(mButtons[4]).mlabel.Enabled := False;
        TImageButton(mButtons[5]).mlabel.Enabled := False;
        OperPopupMenu.Items[0].Enabled := False;
      end;
    
      if (dMain.StateQuery.FieldValues['state'] = 'приглашен') or
        (dMain.StateQuery.FieldValues['state'] = 'оповещен') then
      begin
        TImageButton(mButtons[0]).mlabel.Enabled := true;
        TImageButton(mButtons[1]).mlabel.Enabled := False;
        TImageButton(mButtons[2]).mlabel.Enabled := False;
        TImageButton(mButtons[3]).mlabel.Enabled := true;
        TImageButton(mButtons[4]).mlabel.Enabled := False;
        TImageButton(mButtons[5]).mlabel.Enabled := False;
        TImageButton(mButtons[6]).mlabel.Enabled := False;
        if (dMain.StateQuery.FieldValues['state'] = 'приглашен') then
          OperPopupMenu.Items[0].Enabled := False
        else
          OperPopupMenu.Items[0].Enabled := true;
      end;
    
      if (dMain.StateQuery.FieldValues['state'] = 'прием начат') then
      begin
        TImageButton(mButtons[0]).mlabel.Enabled := False;
        TImageButton(mButtons[1]).mlabel.Enabled := true;
        TImageButton(mButtons[2]).mlabel.Enabled := False;
        TImageButton(mButtons[3]).mlabel.Enabled := False;
        TImageButton(mButtons[4]).mlabel.Enabled := true;
        TImageButton(mButtons[5]).mlabel.Enabled := true;
        TImageButton(mButtons[6]).mlabel.Enabled := False;
        OperPopupMenu.Items[0].Enabled := False;
      end;
    end;

    На работе достался проект, состоящий чуть менее чем полностью из подобных высеров.

    Запостил: chaoswithin, 09 Сентября 2011

    Комментарии (37) RSS

    • да ладно, это быдлокод, он неплохо поддается чтению и рефакторингу
      Ответить
      • Чтобы понять что делает каждая кнопка надо заглянуть в здоровенную процедуру, в которой они все создаются. Я сейчас переделываю это на TPageControl. И других проблем тут не мало, я еще 5 штук насчитал.
        Ответить
    • ...там даже имена переменных вразумительные...
      Ответить
    • бульщит
      странно, вроде только первокуры не понимают в булевый тип
      Ответить
    • >Delphi
      >работа
      хладная притча, отрок
      Ответить
    • Тарас, а зачем в делфи префикс "T"?
      Ответить
      • Это удобно.
        Пишешь функцию
        DoSomething(GameUnit: TGameUnit)
        и не надо ничего придумывать, чтобы имя переменной не совпало с именем типа.
        Ответить
      • Не скомпилируется без T:
        DoForGameUnit(GameUnit: GameUnit)
        Придумать нормальные названия дельфины не в состоянии. Под водой тяжело думается. Давление на глубине большое. Плющит.
        Ну вы видели их:
        Form1
        TForm1
        Edit1
        и тд в коде.
        Язык не дисциплинирует.
        Ответить
        • TRoll
          Ответить
          • TTarasB, ты очень странный тип.
            Яд с собой в сумочке не носишь? Гном штоле? Тебе в пору поставить аватарку дельфина.
            http://www.gamedev.ru/art/forum/?id=5592
            Ответить
          • >TRoll
            Дельфипроблема?
            Чего это я вдруг Roll?
            TTroll же!
            А то и TFat32Troll
            Ответить
        • Ваши варианты, пожалуйста.
          Ответить
        • Без T компилируется. Варианты стиля:
          DoForGameUnit(aGameUnit: GameUnit)
          DoForGameUnit(GameUnit: GameUnit_type)

          В C++ скомпилируется объявление int int;?
          Ответить
          • > aGameUnit: GameUnit

            А все внутренние поля начинать с f? Нет, неудобно, так как название типа пишется реже, чем имя переменной.

            > GameUnit: GameUnit_type

            Некрасиво, дольше набирать. Плюс только один - исключается тавтология названия типа с названием переменной на букву T, например
            Roll: TRoll;
            Troll: TTroll; // ошибка
            Но это случается редко, со мной только один раз.
            Ответить
            • Roll: TRoll;
              Troll: TTroll; // ошибка
              Дельфинапроблемы.
              Ответить
              • Регистропроблемы.
                Я бы запретил одно и то же слово писать в разных местах разным регистром. И запретил бы объявлять разные имена, отличающиеся только регистром.
                Ответить
                • >Я бы запретил
                  А вы прямо комитет стандартизации дельфи. Действуйте тогда.

                  >Регистропроблемы.
                  Ага, а создал их Вирт, а Борланд перенёс эти проблемы в свой язык. И вы ещё считаете, что это не дельфинопроблемы?
                  Ответить
                  • Так в Дельфи имена, отличающиеся только регистром, создать нельзя, а в Си — можно, а потом долго выяснять, почему не работает. Это сипроблемы.
                    Ответить
                • Не знаю, мне нравиться подход, который используется сейчас во многих языках: названия типов с большой буквы, всё остальное (функции, имена переменных) - с маленькой.
                  Ответить
                  • лингвисты негодуют: как это так, имена собственные - со маленькой строчной, а нарицательные - с большой прописной?
                    Ответить
          • >В C++ скомпилируется объявление int int;?
            Нет, но мой ник вы знаете и хорошо.
            Ответить

    Добавить комментарий