1. Java / Говнокод #2866

    +87.2

    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
    else {
                                                 if(codeName == SummaryConstants.TYPE_COST) {
                                                    return new Cost(rtOBJ);
                                                 }
                                                 else {
                                                    if(codeName == SummaryConstants.TYPE_EQUIPMENT) {
                                                       return new Equipment(rtOBJ);
                                                    }
                                                 }
                                              }
                                           }
                                        }
                                     }
                                  }
                               }
                            }
                         }
                      }
                   }
                }
             }

    не стал утомлять еще и километром вложенных if ов..
    а говнокод в том, что здесь можно было использовать switch

    Запостил: maxt, 25 Марта 2010

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

    • Ну или не обязательно использовать else, можно ведь
      if (...) return ...;
      if (...) return ...; и т.д.
      Ответить
      • Можно еще переформатировать:
        if () {
        } else if {
        
        } else if {
        
        } else {
        
        };
        Ответить
    • А если codeName - строка, то свич нельзя использовать...
      Ответить
      • а в сишарпе можно

        как же убога эта ваша ява
        Ответить
    • в данном случае codeName это int
      Ответить
    • Ну мой рекорд по вложенности ты не побил :D
      Ответить
    • а теперь представьте, жто написано на дельфи - отступтов два пробела, вместо скобок слова.

      ужос
      Ответить
      • Если оператор один, то в Delphi операторные скобки не ставятся, так что строк там будет в 2 раза меньше, не надо гнать.
        Ответить
    • Можно было бы вместо строковых констант использовать Emum, который имел бы абстрактный метод типа createSomeObject(), а каждая константа переопределяла бы его на свой лад, возвращая конкретный подтип. Таким образом константы были бы "умные" и не нуждались бы вообще в стороннем коде, создающем на их основании конкретные типы.
      Ответить
    • да тут классический случай макаронного кода, когда всё можно было бы по маленьким функциям раскидать
      Ответить
    • а можно и паттерн заюзать
      Ответить
    • А если
      if (check_something) { continue; }
      пойдёт в таком случае, что бы не заморачиватся с вложеностью ?
      Ответить

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