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

    +126.1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    switch (dType) { 
             case "2":
                        return Title + "(" + dTitle + ")";
                        break;
             case "3":
                        return Title + " за " + dDate.ToString("d");
                        break;
             default: return Title;
                        break;
    }

    Чтобы уж наверняка :)

    Запостил: pe4enov, 08 Декабря 2009

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

    • В чём говнокод?
      Ответить
      • Понаставил break; после return'ов. Между прочим, это мне компилятор нажаловался, посчитал это waning'ом.
        Забыл написать, что это внутри функции, но думаю и так понятно.
        Ответить
        • В Java оно бы даже не скомпилилось бы.
          Ответить
          • Да, ява классный язык, никак его не осилю :(
            Ответить
    • Если считать тут за говнокод лишние брейки. то тогда запись вида
      if(condition)
      {
      DoSingleAction();
      }
      тоже можно считать за говнокод за лишние скобки...
      Ответить
      • Скобки - это не оператор. А там лишний оператор, который никогда не выполнится.
        Ответить
      • Если я не ошибаюсь, в C# в отличие от C++ брейки вообще не нужны. В Сиплюсах когда обрабатывает один кейс (на случай если проверяемое значение свитча изменилось) оно проверяет дальше и может попасть в другой, для этого и ставится брейк в каждом кейсе. В сишарпе же (опять же, это насколько я помню, может, конечно, с чем-то спутал) после обработки кейса сразу уходит за него.
        А тут же мало того, что они везде есть, так ещё и после ретурнов, то есть до них и дойти не может. То есть, это не совсем одно и то же, что со скобками. Скобки ставить - это хороший тон.. Насчёт брейков не знаю, насколько этот тон хороший.
        Ответить
        • Не, я таки ошибся. То есть с одного кейса в другой сишарп не ходит, а брейк необходим просто синтаксически..
          Ответить
          • Вообще case нуждается в break, иначе он пройдет по всем кейзам. Но в данном случае, в них нет никакого смысла, и компилятор считает их warning'ами.
            Ответить
            • A jump statement such as a break is required after each case block, including the last block whether it is a case statement or a default statement. With one exception, (unlike the C++ switch statement), C# does not support an implicit fall through from one case label to another.

              http://msdn.microsoft.com/en-us/library/06tc147t%28VS.80%29.aspx
              Ответить
        • Voobsche to problema v drugom.
          Govnokodom mozhno uzhe schitat' 3 vozvrata iz funkcii.
          Ja by hotel posmotret' na avtora esli emu prijdetsja chto-to esche sdelat'. Return dolzhen byt' odin. V konce.
          Ответить
          • Бывают ситуации, когда несколько return'ов гораздо проще, а только ради того чтобы "return был один" неоправдано бывает нахерачивать лапшу
            Ответить
            • Тут return'ы явно не упрощают, а наоборот засерают код.
              Ответить
    • Ну еще можна домахатся, что нужно юзать String.Format замисть конкатинации.
      А так на говнокод не тянет.... так гамнишком пованивает.... но не гавнокод!
      Ответить
    • Не вижу в данном примере говнокода, просто неправильно оформленный код.
      Исходя из так называемых "Правил хорошего тона в программировании" точка выхода из метода должна быть одна, ибо несколько return в большом методе усложняют понимание кода. Объявить в начале метода переменную (например result), оперировать ею и в конце метода вернуть ее не сложно. А использование нескольких return или хотя бы одного goto является признаком того, что программист не представляет себе полностью структуру метода или это просто программирование в стиле "как-нибудь лишь бы работало".
      И, вообще, рекомендую почитать книгу "Современная практика программирования на Microsoft Visual Basic и Visual C#" ("Practical Guidelines and Best Practices for Microsoft Visual Basic and Visual C# Developers") Москва, 2006г, издательство Microsoft Press. Это не учебник, а подборка советов о том как надо и как НЕ надо писать. Думаю опыт и советы программистов из Microsoft стоит уважать.
      Ответить

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