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

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    public static string GetString(string inpString, string defValue)
    {
    	if (inpString == null)
    		return defValue;
    	return inpString;
    }

    Этот метод заботливо лижит в файле с всякими вспомогательными функциями, мало ли где может понадобиться

    Запостил: Smekalisty, 08 Сентября 2014

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

    • - Лизать! На земле лизать! (q) из древнего бойана.
      Ответить
    • и в чем проблема?
      Ответить
      • В том для чего такое нужно. Возможно только для того, чтобы автор сего творения получал неистовое удовольствие от своего божественного творения. В остальном, бесполезный кусок Г.
        Ответить
        • что значит бесполезный... в определенном контексте может сделать клиентский код более читабельным. Вот название метода неудачно, это да.
          Ответить
          • В шарпе же вроде был тернарник без средней части?
            foo = bar ?: "default";
            Ответить
            • Был как || в жс:
              foo = bar ?? "default";
              Ответить
              • > Был
                Почему в прошедшем времени?
                Ответить
                • > Почему в прошедшем времени?
                  >> В шарпе же вроде был тернарник без средней части?
                  Потому что экономия мышления и использование слов предыдущего оратора.
                  Ответить
              • >как || в жс
                Так-то сахар, а в жс особенности неявной типизации языка.
                Ответить
                • нет, это не относится к неявной типизации, функция определена как:
                  T <T> ||(T a, T b) {
                      if (a is equivalent to nil) return b;
                      else return a;
                  }

                  С той только разницей, что b вычисляется по требованию. Такую функцию можно организовать в любом языке, который позволяет пользователю ленивые вычисления и родовые переменные (например в Хаскилле). Типы на это не влияют.
                  Ответить
                  • T <T> ||(T a, T b) {
                    Что у вас это за чудесный язык? Какой-то оторванный от реальности диалект. Мы точно говорим о javaScript?

                    >С той только разницей, что b вычисляется по требованию
                    Это свойство оператора || еще с сишки.

                    >Типы на это не влияют.
                    Дооо. Неявное превращение в boolean вообще никак не влияет.
                    (false || 2)
                    Ответить
                    • В Си || делает не то же самое, что и в ж.скрипте. В Си он возвращает 0 или 1. В ж.скрипте он возвращает один из аргументов. Это совсем разные функции.
                      Синтаксис естесственно не настоящий. Но на сколько я могу судить такой синтаксис для генериков самый популярный.

                      Никаких превращений в булеан не происходит. Функция возвращает Т а не булеан.
                      Ответить
                      • > нет, это не относится к неявной типизации, функция определена как:
                        > Это совсем разные функции.
                        Если речь о js, тогда вы несете полнейшую чушь, обусловленную непониманием элементарных основ:
                        || - это не функция, а оператор. Никто не вызывает его так: ||(a,b).

                        >Никаких превращений в булеан не происходит. Функция возвращает Т а не булеан.
                        Coolstory, bro.
                        Ответить
                        • > || - не функция, а оператор.
                          Дык различия чисто синтаксические.

                          > Coolstory, bro.
                          http://ideone.com/CSDNxc
                          Ответить
                          • >Дык различия чисто синтаксические.
                            Можно и хуй называть пальцем, различия ведь чисто синтаксические, можно писать безумные сигнатуры ||(T a, T b). Отличия - колоссальные.
                            Можно ли, например, сохранить ссылку на оператор в переменной?

                            >http://ideone.com/CSDNxc
                            Не понял.
                            Ссылкой на ideone выражается согласие с тем что: "Никаких превращений в булеан не происходит."?
                            Ответить
                            • > выражается согласие с тем что: "Никаких превращений в булеан не происходит."?
                              Yep. Где они произошли то? Что оператору дали, то он дословно и вернул.

                              Разве что внутри реализации оператора, чтобы проверить истинность (и то не факт т.к. она может тупо проверить истинность безо всяких кастов). Спеку читать лень.
                              Ответить
                              • У-у-у. Какие же вы занудные.
                                Как без конверсии в буль понять что вычисления окончены на lval или надо вычислять правый?
                                >>"Никаких превращений в булеан не происходит."?
                                >Yep. Где они произошли то?
                                В стандарте языка. http://www.ecma-international.org/ecma-262/5.1/#sec-11.11
                                Semantics
                                The production LogicalORExpression : LogicalORExpression || LogicalANDExpression is evaluated as follows:
                                
                                1. Let lref be the result of evaluating LogicalORExpression.
                                2. Let lval be GetValue(lref).
                                3. If ToBoolean(lval) is true, return lval.
                                4. Let rref be the result of evaluating LogicalANDExpression.
                                5. Return GetValue(rref).
                                Ответить
                                • Но wvxvw же говорит о результате возвращаемом оператором, а не о том, что где-то там в кишках реализации оператора выполнился ToBoolean, результат которого сразу же после проверки канул в лету.
                                  Ответить
                                  • >Но wvxvw же говорит о результате возвращаемом оператором
                                    Я прекрасно вижу о чем говорит wvxvw. Во-первых он не говорит слова "оператор". Он твердит "функция".

                                    Во-вторых:
                                    >>if (a is equivalent to nil)
                                    Ответить
                                  • > а не о том, что где-то там в кишках реализации оператора выполнился ToBoolean, результат которого сразу же после проверки канул в лету
                                    ToBoolean может и канет, но в общем случае (про который меня тут никто не спрашивал, но я так, ради напоминания), может бомбануть.
                                    http://ideone.com/BYDBXr
                                    Ответить
                                    • > может бомбануть
                                      У нечитавшего спеку bormand'а бомбануло, не спорю. Но оператор || тут совсем не при делах, без него все то же самое:
                                      http://ideone.com/LBw6Ug

                                      Да и всё согласно спеке: ToBoolean() для любого объекта всегда true, вызывать у этого объекта ничего не надо. И побочные эффекты ты к ToBoolean() ну никак не прикрутишь.

                                      А про in: Return the result of calling the [[HasProperty]] internal method of rval with argument ToString(lval). Отсюда вызов.
                                      Ответить
                            • > Можно ли, например, сохранить ссылку на оператор в переменной
                              Окей, окей...
                              Ответить
                        • Оператор и функция - это одно и то же. Просто те, кто не [до]читал стандарт решили, что операторы, это функции, которые нельзя передать аргументом в другую функцию.
                          Ответить
                          • > Оператор и функция - это одно и то же
                            Угу, и вызывается оператор также как и функция ||(a,b). Этот, лютый, отборный бред я уже видел выше.

                            >те, кто не [до]читал стандарт решили
                            Ну вы то неоспоримый знаток стандарта ecmascript, не буду спорить.
                            Ответить
                            • I found just what I was needed, and it was enengtainitr!
                              Ответить
                            • Such an <a href="http://jpunkcylg.com">imiserspve</a> answer! You've beaten us all with that!
                              Ответить
                            • I have exactly what info I want. Check, please. Wait, it's free? Awemsoe! http://xtcdqsc.com [url=http://ixmeeml.com]ixmeeml[/url] [link=http://pkdnyi.com]pkdnyi[/link]
                              Ответить
            • всем понятно, что реализация эквивалентна: return inpString ?? defValue; но дело не в этом. Мы не знаем контекст использования; если меняется условие возврата defValue, то не надо прыгать по всему коду... В любом случае это не является говнокодом.
              Ответить
    • >лижит в файле с всякими вспомогательными функциями
      Правильно он лижет. Назвать isNull, добавить генериков и вуаля! сахарок ?? совсем не нужен.
      coalesce c вараргами по вкусу.
      Ответить

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