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

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if ((ObjectType)value == ObjectType.Undefined)
    {
        return string.Empty;
    }
    {
        return ((ObjectType)value).GetDescriptionAttribute();
    }

    Как будто не хватает чего-то..

    Запостил: save2love, 03 Сентября 2013

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

    • Если ты про else, то он здесь и не обязателен.
      Ответить
    • в пизду фигурные скобки в конце
      Ответить
      • Если следовать логике, можно вообще их везде убрать.
        Ответить
        • Ну вообще везде не получится, может быть в стайлгайде указано, что после if'ов и while'ов скобки обязательны. Но вот в строках 5 и 7 они точно не нужны.
          Ответить
          • дерективы else нет.
            C# позволяет при этом сократить кол-во кода.

            if ((ObjectType)value == ObjectType.Undefined)
                return string.Empty;
            return ((ObjectType)value).GetDescriptionAttribute();
            Ответить
            • > дерективы else нет.
              Спасибо кэп. Я в курсе, что директивы else тут нет, и именно поэтому и говорю, что в строках 5 и 7 скобки не нужны.

              > C# позволяет при этом сократить кол-во кода.
              Звучит прям как фраза из рекламы.

              И си и с++ и яваскрипт, да что уж тут говорить, даже паскаль с его begin-end, да и почти любой другой язык с блоками позволят это сделать. Это не какое-то магическое свойство c# :)

              Но как я и сказал выше, в стайлгайде может быть указано, что после if'ов и while'ов скобки обязательны.
              Ответить
              • говностайлгайд :)
                Ответить
                • Говно тот, кто не следует стайлгайду, принятому в его фирме.
                  Ответить
                  • >>Говно тот, кто не следует говностайлгайду, принятому в его фирме.
                    Ответить
                    • Работали когда-нибудь с кодом, который писало хотя бы 3-5 человек, у которых не было стайлгайда, и они срали с высокой колокольни на то, как был оформлен код, написанный до них, оформляя свои коммиты по-своему? :)

                      Вот лучше уж говностайлгайд, чем такой трешак. Собственно ради этого стайлгайды и принимают, не от хорошей жизни же. Ну и для предотвращения холиваров в духе "Вася, ты почему скобки ставишь, я вот их на дух не переношу.".

                      P.S. Вот я более чем уверен, что тут найдутся несколько человек, которые считают, что не ставить скобки - говно. И этот тред превратится в срач :)
                      Ответить
                      • говностайлгайд тред иди
                        ;)
                        Ответить
                      • О боже, какой ужастный гайдлайн, он заставляет меня поставить две дополнительных скобочки, FUUUUUUUUUUUU.
                        Ответить
                        • Запилили новый, менее "ужасный" гайдлайн.
                          Теперь кричат: О ужасный гайдлайн, он заставляет меня ставить две дополнительные скобки, когда я всего лишь хочу добавить ещё один оператор в ветку кода, а иногда и вовсе забываешь, и собираешь код с говнобагой и лишним индентом.
                          Ответить
    • это же property, да? Keyword value встречается только в свойствах по-моему. Зачем тогда каст (ObjectType)value?
      Ответить
    • return String.Empty;

      Говнокод. Надо так:
      return "";
      Ответить
      • String.Empty, а не "" было важно для .NET 1. Сейчас нет. Но вроде бы оно по-прежнему остаётся рекомендуемым Microsoft'ом.
        А вообще, я за "".
        Ответить
        • В сисярпе пула строк нету разве?
          Ответить
        • "" - это константный забой, а String.Empty - вызов свойства класса. Так -то!
          Ответить
          • Но вроде как они возвращают один и тот же объект.

            http://ideone.com/pHTr47
            Ответить
            • Поэтому я и сказал, что сейчас разницы нет. Но в первом .NET'е она была.
              А ещё, они вроде в одном из обновлений пофиксили поверение при присвыивании в String.Empty через рефлексию...
              По поводу вызова свойства - проверял - разницы по времени выполнения нет.
              Ответить
            • А ещё new string('a', 0) вернёт тот же объект.
              Ответить
            • но логика разная. А дао программирования - наше все
              Ответить
              • А в String.Empty можно что-нибудь засунуть? :)
                Ответить
                • Можно, ещё как. и в "" можно.
                  Ответить
                  • Нельзя в "". Это константа. По крайней мере если какие-нибудь прямые манипуляции с памятью не присобачить.
                    Ответить
            • >В сисярпе пула строк нету разве?
              Ответить
              • Насколько помню - есть. В нем лежат все литералы и строки, которые сам засунешь туда чем-нибудь типа String.Intern(s). Остальные строки в пул пихать было бы глупо.

                Но, в отличие от джавы, в шарпе оператор == для строк это не сравнение ссылок, а алиас для Equals(). Поэтому a == "foo" там вполне юзабельно.

                Реквестирую поправки от знатоков си-с-решеткой.
                Ответить
    • Resharper, наверное, подсказал удалить else
      Ответить

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