1. C# / Говнокод #5016

    +118

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public void AllSolutionButtons(bool TrueOrFalse)
            {
                SetButtons("TopCorners", TrueOrFalse);
                SetButtons("TopWings", TrueOrFalse);
                SetButtons("BottomCorners", TrueOrFalse);
                SetButtons("BottomWings", TrueOrFalse);
                SetButtons("middleSlice", TrueOrFalse);
                SetButtons("Solve", TrueOrFalse);
            }

    У меня зла не хватает ...... как вообще так можно писать ... а главное как такое придумать можно %)

    Запостил: Arbium, 22 Декабря 2010

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

    • а ... ну и это добавочка
      public void SetButtons(string Name, bool active)
              {
                  Button B = (Button)page.FindName(Name);
      
                  if (active)
                  {
                      B.Foreground = new SolidColorBrush(Color.FromArgb(255, 205, 89, 3));//Colors.Black);
                      B.IsEnabled = true;
                  }
                  else
                  {
                      B.Foreground = new SolidColorBrush(Colors.LightGray);
                      B.IsEnabled = false;
                  }
              }
      Ответить
      • Нет, ну тут ещё могут быть какие-то разумные исторические причины. А первый код да, улыбает.
        Ответить
    • int ZeroOrOneOrTwoOrThreeOrDohera;
      Ответить
    • Простите меня, новичка, но чего в этом коде плохого ?
      Кроме, конечно, переменной с глупым именем TrueOrFalse...
      Ответить
      • if (active)
        {
        }
        else
        {
        }
        можно слить в одну ветку
        Ответить
        • Не всегда. Это ветвление может остаться как артефакт или для будущих изменений.
          Ответить
      • Беда в том, что мы работаем с кнопками через их имена! (string name)

        Допустим мы опечатались в имени кнопки, программа компилируется, ошибки не выдает и даже работает,но как толко мы начинаем работать с этой кнопкой начинаются чудеса. Логика вынесена вообще в левый класс никак не связанный ни со вьюхой ни с бизнес логикой. Можно ли будет такую ошибку быстро отловить? А если там еще трай-кетчи в "нужные" места поставлены?

        С другой стороны если мы удалим кнопку с формочки, что произойдет? Или если мы захотим добавить еще одну кнопку? мы должны будет это прописывать в 4х местах? .... это неудобно и долго.

        Люди стремятся сделать системы из компонент(кусков, модулей - как угодно) как можно менее связанных между собой, с четко обозначенной функциональностью (выраженной например юнит и интегр. тестами). Это позволяет снизить ошибки хитрого и неочивидного взаимодействия, здесь же мы наблюдаем наооброт - еще более тесное привязывание View к логике приложения. ..... как то так

        Ну и плюс по наименованиям не сильно приятный код. Но меня выбесила именно архитектурная кривизна этого всего (я согласен, что общая картина не видна по этому отрывку кода)
        Ответить
      • По строкам искать кнопки - медленно.
        Ответить
        • *По строковым названиям компонентов - искать компоненты на форме медленно.
          Ответить
    • IsEnabled - таки фейк...
      Ответить
    • > bool TrueOrFalse
      Самодокументируемый код такой самодокументируемый...
      Ответить

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