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

    +113

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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; };
           // ...

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

    Запостил: Говногость, 16 Июня 2010

    Комментарии (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();
                                }
                                Ответить
                                • if (killWerewolf()) {
                                     someHouseKeeping();
                                   }
                                  Ответить
                                • совершенно идентичные логически записи. правда с помощью bool wereWolfTime() {return night&&fullMoon;} поясняется, что night и fullMoon это еще одна логическая единица. Но код "так плохо" вполне читаем
                                  Ответить
                • в 6-ом очепяточка
                  return a == true; //тут по идее a == false;
                  Ответить
    • Да! Это зачёт!!! Но не смешно, мой тим сам так пишет и требует писать....
      Ответить
    • Почему все топеги привращаются в ахтунгов? :'(
      Ответить
    • показать все, что скрытоламаки
      Ответить
    • гомотред
      Ответить
    • Вот заняться людям нечем. Утро уже, а они всё гомосяца.
      Ответить
      • и восход солнца их не убивает...
        if (night && fullMoon) {
        takeSilverBullet();
        killWerewolf();
        if (wereWolfKilled()) {
        someHouseKeeping();
        }
        }
        Ответить
    • C+++CLI=?
      Ответить

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