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

    +123

    1. 1
    2. 2
    3. 3
    if (!(IsPostBack == true))
    
    // далее везде, см. ссылку

    Реальный индус (Thoothukudi, Tamil Nadu, India) в реальном вопросе на StackOverflow (http://stackoverflow.com/questions/5295149/) наложил натуральную кучу говна.

    Запостил: abatishchev, 14 Марта 2011

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

    • if (!(IsPostBack.ToString() == "true"))
      как вариант))
      Ответить
      • Самый кошерный вариант:
        if (!(IsPostBack.ToString().ToLower().Length == 4))
        Ответить
        • Порванные ошметки бояна же.
          Ответить
        • ToLower() - не кошерно. И где кошерный Trim()?
          Ответить
          • ToLower() это для поправки предудыщего комментатора (где он сравнивает bool.ToString() с "true"), а про Trim, каюсь, забыл.
            Ответить
            • ну от перемены кейса ленф не меняется
              Ответить
              • Искать смысл в этом бессмысленном коде бессмысленно. А от смены кейса, длина текста может измениться, это факт (http://msdn.microsoft.com/en-us/library/3e943zds.aspx)
                Ответить
                • мелкософт в своем репертуаре. не байты надо считать, а символы.
                  Ответить
                  • И правда, вот МС негодяи! Уже и Unicode Consortium подкупили:
                    "Case mappings may produce strings of different length than the original. For example, the
                    German character U+00DF ß expands when uppercased to
                    the sequence of two characters “SS”. This also occurs where there is no precomposed character corresponding to a case mapping, such as with U+0149."

                    А с ней и Джаву (http://download.oracle.com/javase/1.3/docs/api/java/lang/Character.html#toLowerCase%28char%29), и так далее.
                    Ответить
                    • при чем тут джава? в ней строго все чары по два байта. Окей, не так давно появились т.н. кодовый точки (code point), которые являются "псевдосимволами"
                      Ответить
                      • Потому что джава следует стандартам, а значит должна корректно обрабатывать case mappings в том числе преобразовывать односимвольные конструкции в двухсимвольные.

                        И между прочим в C# char тоже строго 16-битовый.
                        Ответить
                        • и в доке заикнулись только то, что ловеркейс не всегда ловеркейсит
                          Ответить
                          • ловеркейс не ловеркейсит только если нет подходящего маппинга. Но в доке не про это. В доке сказано, что для некоторых символов ловеркейс сделает свое дело даже если isUpperCase() вернет false.

                            Note that some Unicode characters in the range '\u2000' to '\u2FFF' have lowercase mappings; this method does map such characters to their lowercase equivalents even though the method isUpperCase does not return true for such characters.
                            Ответить
                  • байты считает StringComparison.Ordinal
                    та же, что по-умолчанию - CurrentCulture - делает поправку на всякие тильды и проч. ум-ляуты, т.е. байтов больше чем символов
                    Ответить
          • if (!((IsPostBack.ToString().Trim().Substri ng(0,4))=="true"))
            Ответить
        • Не, ну тогда уж
          if ((!(IsPostBack.ToString().ToLower().Leng th.ToSting ()<="4"))&&(!(IsPostBack.ToString().ToLo wer().Length.ToSting ()>="4"))){
          ...
          }
          /* пробелы снесены for great justice */
          Ответить
    • и почему не if (!IsPostBack != !true)
      Ответить
    • Посмотрел полностью код по ссылке. Индус жжёт.

      if (Request.QueryString.Get(1) == "G")
      .....

      чувак ищет точку "G" в параметрах запроса )))))))
      Ответить
    • А вот еще закрытие коннекшена:
      ....
      Cnn.Close();
      Cnn.Dispose();
      Ответить
      • .NET 1.x style
        не айс, но лучше так, чем никак
        мол GC всё закроет :-D
        Ответить
    • C# -- это объектно-ориентированный PHP для индусов, неудивительно, что они миллионами безошибочно слетаются на stuckoverflaw за копипастой и халявным консалтингом
      Ответить
      • так а на чем дотнетщину-то писать: от C++/CLI в шоке, не на VB ведь после C/C++
        Ответить
        • уж лучше CLI, чем нечто с C++ синтаксисом, но семантикой VB
          Ответить
          • вот уж нет
            собрать на C++/CLI что-то с первого раза так же тяжело, как легко выстрелить себе в ногу, или ещё куда-нибудь
            Ответить
          • Сразу видно, что ты не писал ничего на C#. Иначе бы заявления про "семантику VB" держал бы при себе.

            Если в языке нет прямой адресации памяти - это не значит, что он годится только для одноизвилинных формочек.
            Ответить

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