Школоло / Говнокод #7817 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 chaoswithin, (Updated )

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

  • да ладно, это быдлокод, он неплохо поддается чтению и рефакторингу
    Ответить
    • Чтобы понять что делает каждая кнопка надо заглянуть в здоровенную процедуру, в которой они все создаются. Я сейчас переделываю это на TPageControl. И других проблем тут не мало, я еще 5 штук насчитал.
      Ответить
  • ...там даже имена переменных вразумительные...
    Ответить
  • бульщит
    странно, вроде только первокуры не понимают в булевый тип
    Ответить
    • Это удобно.
      Пишешь функцию
      DoSomething(GameUnit: TGameUnit)
      и не надо ничего придумывать, чтобы имя переменной не совпало с именем типа.
      Ответить
    • Не скомпилируется без T:
      DoForGameUnit(GameUnit: GameUnit)
      Придумать нормальные названия дельфины не в состоянии. Под водой тяжело думается. Давление на глубине большое. Плющит.
      Ну вы видели их:
      Form1
      TForm1
      Edit1
      и тд в коде.
      Язык не дисциплинирует.
      Ответить
      • Без T компилируется. Варианты стиля:
        DoForGameUnit(aGameUnit: GameUnit)
        DoForGameUnit(GameUnit: GameUnit_type)

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

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

          > GameUnit: GameUnit_type

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

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8