Си диез / Говнокод #3493 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
private static Predicate<Token> GetMatchBracePredicate(Token token)
        {
            if (token is Token.BeginBrace)
                return delegate(Token t) { return t is Token.BeginBrace; };
            if (token is Token.BeginQuote)
                return delegate(Token t) { return t is Token.BeginQuote; };
            if (token is Token.BeginRound)
                return delegate(Token t) { return t is Token.BeginRound; };
            if (token is Token.BeginSquare)
                return delegate(Token t) { return t is Token.BeginSquare; };
       // ...

С просторов интернета.

Запостил: Говногость Говногость, (Updated )

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

  • нормальный код. а самый ГК где будут вызывать (зачем??) этот делегат остался, как водится, за кадром
    Ответить
    • Магия в два хода

      1.
      private static Predicate<Token> GetMatchBracePredicate(Token token) { return t => t.GetType() == token.GetType(); }

      2. private static bool MatchPredicate<T>(Token token) where T is Token { return typeof(T) == token.GetType(); }
      Ответить
        • Твой микромоск разорвало потоком ниасиляемой информации?
          Ответить
          • зачем простые вещи делать так сложно? если затраты неоправданны?
            Ответить
            • bool a;

              1. return a;
              2. return a ? true : false;
              3. return a == true ? true : false;
              4. if (a == true) return true; else return false;
              5. if(!a == true) return false; else return true;
              6. if(!a == true) return a == true; else return !a == false;

              Обычно говнокодеры останавливаются на четвертом уровне сложности, и считают, что достигли вершины. Однако, есть еще пятый и шестой, а после шестого - дзен.
              Ответить
                • Ближе всего к первому уровню гость с двумя дженериками. Он две строки написал и пользуется, а ты постоянно переписываешь, дописываешь, копипастишь, исправляешь баги копипасте и теряешь время.
                  Ответить
                  • во всем нужен разумный подход. простые вещи можно и инлайном писать, а если код начинает требовать костылей, то значит нуждается в рефакторинге.
                    Периодический рефакторинг необходим всегда, потому что не всегда заранее можно сказать, по каким веткам в будущем будет бежать исполнение кода. что-то инлайнить, что-то вынести в отдельные методы и классы, к чему-то написать интерфейс...
                    С опытом, конечно, начинаешь некоторые вещи сразу видеть, как лучше сделать, но идеал, как водится, недостижим
                    Ответить
                    • Об инлайне думать во время реализации алгоритма - и смех и грех.
                      Ответить
                        • "Если вы можете дать внятное название строке кода -- выносите ее в метод, даже если это одна строка" (с) М. Фаулер.

                          "Рефакторинг -- улучшение существующего кода"
                          Ответить
                          • "Если у вас отклеился кусочек обоев, поклейте новый слой обоев"

                            "Рефакторинг -- улучшение существующего кода"
                            Ответить
                          • дибилизм. в метод надо выносить логически связанную функциональность, а не именованность

                            по вашему, и по Фаулеру, я должен писать так
                            method a(){if(a())return this.returnA();else return this.returnB();}

                            method returnA(){return this.a.A();}

                            method returnB(){return this.a.B();}
                            Ответить
                            • Любой логическо связанной последовательности можно дать имя.

                              Например вот так плохо:

                              if (night &&  fullMoon) {
                                takeSilverBullet();
                                killWerewolf();
                                if (wereWolfKilled()) {
                                 someHouseKeeping();
                               }
                              }


                              А вот так хорошо:

                              bool wereWolfTime() {
                              return night &&  fullMoon;
                              }
                              
                              void takeCareAboutWereWolf() {
                                takeSilverBullet();
                                killWerewolf();
                                if (wereWolfKilled()) {
                                 someHouseKeeping();
                               }
                              }
                              
                              
                              if (wereWolfTime()) {
                                takeCareAboutWereWolf();
                              }
                              Ответить
                              • совершенно идентичные логически записи. правда с помощью bool wereWolfTime() {return night&&fullMoon;} поясняется, что night и fullMoon это еще одна логическая единица. Но код "так плохо" вполне читаем
                                Ответить
  • Да! Это зачёт!!! Но не смешно, мой тим сам так пишет и требует писать....
    Ответить
  • Почему все топеги привращаются в ахтунгов? :'(
    Ответить
  • Вот заняться людям нечем. Утро уже, а они всё гомосяца.
    Ответить
    • и восход солнца их не убивает...
      if (night && fullMoon) {
      takeSilverBullet();
      killWerewolf();
      if (wereWolfKilled()) {
      someHouseKeeping();
      }
      }
      Ответить

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

Переведи на "PHP", guest!

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


    8