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

    +145.4

    1. 1
    ViewState["Action"] = result.client == "merchantName" ? false : true;

    Запостил: nettrash, 18 Февраля 2010

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

    • и чего? написать чуть длиннее чем кратчайшим способом == говнокод?
      Ответить
    • считаю что да ))))
      Ответить
    • Бл*, да скока можно постить эти бойаны с "? true : false", "? false : true" и иже с ними? Не смешно уже
      Ответить
      • Хорошо! Предложи свой вариант написания этой строки! Обсудим! ))))
        Ответить
        • Кагбе
          ViewState["Action"] = result.client != "merchantName";
          было бы вполне достаточно. Да и менше путаницы при чтении кода.
          Ответить
          • и все равно я иногда пишу "? true : false;" просто потому что это более читабельно.

            не часто - но в некоторых местах где куча логики мне это реально помогает.
            Ответить
    • я так понимаю в C# это просаживает производительность, из-за того что компилятор байткода не выкинет лишние команды?
      Ответить
      • ваши познания про С диез меня пугают.
        Байткод в шарпе - рофлмао
        Ответить
        • я так понимаю, сначала компилируется в байткод, а при запуске из байткода в комманды процессора... или что-то поменялось со вчерашнего дня??
          Ответить
          • ну меня учил рихтер что то что вы назвали байткодом является IL(Intermediate Language)
            Ответить
            • сори, не силен в терминологии...
              Ответить
            • лол, IL это и есть байткод

              Майкрософт любит свои понятия придумывать по жизни и плевать на существующие. Не байткод, с*ка, а "промежуточный язык". Не library, с*ка, а assembly. В ООП уже было понятия делегата, но МС наплевали на это и так обозвали лямбды. ит. д.
              Ответить
              • Делегаты там есть. А лямбда это из ФП.
                Ответить
              • лямбды к делегатам не имеют отношения
                Ответить
      • скомпилировал подобное в релиз, посмотрел байткод - нихрена компилятор не соптимизировал.

        мсил в итоге вышел примерно такой:

        1) сравнить
        2) если true, перейти к п. 5
        3) поставить на стек true
        4) возвратить
        5) поставить на стек false
        6) возвратить

        но на уровне джиттинга весьма вероятна оптимизация (байткод намеренно делается неоптимизированным, чтобы легче было джиттить, наверное).
        Ответить
    • bool-shit
      Ответить
    • !result.client.Equals("merhcantName", StringComparison.InvariantCultureIgnoreC ase);
      мне кажется так вернее
      Ответить
    • наверно, так надо (с сохранением паттерна bool-shit):
      ViewState["Action"] = strcmp(result.client,"merchantName") ? true: false;
      Ответить
    • Тут "? true : false" - обычный говнокод простительный для студентов.

      Но в шарпе можно и перегрузить оператор true:
      class RangeZeroToTen
          {
      
              public int Value { get;private  set; }
      
              public static bool operator true(RangeZeroToTen a)
              {
                  return a.Value <=10;
              }
              public static bool operator false(RangeZeroToTen a)
              {
                  return a.Value>10;
              }
              public void MoveNext()
              {
                  Value++;
              }
          }

      ни потом юзается так

      var range = new RangeZeroToTen();
                  while (range)
                  {
                      range.MoveNext();
                  }


      Вот уж где говнокод при чем на уровне спецификации шарпа
      Ответить

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