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

    +138

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    if ("A" == Key.ToUpper().Substring(startIndex, 1))
            num = 11L;
          else if ("B" == Key.ToUpper().Substring(startIndex, 1))
            num = 12L;
          else if ("C" == Key.ToUpper().Substring(startIndex, 1))
            num = 13L;
          else if ("D" == Key.ToUpper().Substring(startIndex, 1))
            num = 14L;
          else if ("E" == Key.ToUpper().Substring(startIndex, 1))
            num = 15L;
          else if ("F" == Key.ToUpper().Substring(startIndex, 1))
            num = 16L;
          else if ("0" == Key.ToUpper().Substring(startIndex, 1))
            num = 0L;
          else if ("1" == Key.ToUpper().Substring(startIndex, 1))
            num = 1L;
          else if ("2" == Key.ToUpper().Substring(startIndex, 1))
            num = 2L;
          else if ("3" == Key.ToUpper().Substring(startIndex, 1))
            num = 3L;
          else if ("4" == Key.ToUpper().Substring(startIndex, 1))
            num = 4L;
          else if ("5" == Key.ToUpper().Substring(startIndex, 1))
            num = 5L;
          else if ("6" == Key.ToUpper().Substring(startIndex, 1))
            num = 6L;
          else if ("7" == Key.ToUpper().Substring(startIndex, 1))
            num = 7L;
          else if ("8" == Key.ToUpper().Substring(startIndex, 1))
            num = 8L;
          else if ("9" == Key.ToUpper().Substring(startIndex, 1))
          {
            num = 9L;
          }

    Программист, писавший ЭТО считал себя очень большим талантом и был даже тех.диром, пока не уволили....))

    Запостил: CraxyFright, 07 Октября 2013

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

    • > if ("A" == ...)
      Жавоёбский йода-стайл... В шарпике же null не страшен для ==?

      P.S. Строку в среднем Key.Length * 8 раз апперкейсят (если считать символы равновероятными). Бедный сборщик мусора :)
      Ответить
      • Шарп умеет в коммон сабекспрешн иллиминейшн, ну по крайней мере в этом случае у него должно получиться нормально.
        Ответить
        • > коммон сабекспрешн иллиминейшн
          Ну тут х.з.: у выражения есть побочный эффект в виде создания нового экземпляра строки в куче. Далеко не факт, что сможет элиминировать.
          Ответить
          • Дык отцы основатели шарпа не дадуд же грязными руками в куче покопаться. Это для них недостижимый уровень абстракции. Я думаю, что компилятор спокойно посчитает выражения "x".ToLowerCase() и "x".ToLowerCase() эквивалентными и все сделает правильно, т.как "x" константа и ToLowerCase с его точки зрения не имеет побочных эффектов (например, в той же Схеме или КЛ функции которые выделяют память под новые объекты не считаются автоматически имеющими побочные эффекты).
            Ответить
        • > коммон сабекспрешн иллиминейшн

          чито я не поняль?
          Ответить
          • Прогонять с порога простые недо-выражения.
            Ответить
            • я о том, что "Ты по что транслитом написал, смерд"
              Ответить
      • Ну чего жалеть то на пол пути, в конечном итоге в самом плохом случае 16 раз апперкейсов. :)
        Сравнивают символы через строки — это эпично, просто напросто эпично.
        А про то, что это 16тиричный алфавит, я вообще молчу.
        Плюс еще и не правильный.
        PS
        Люто доставляют скобочки обрамляющие последнюю строчку :D
        Ответить
        • > в самом плохом случае 16 раз апперкейсов. :)
          Ну я средний случай оценивал.

          > Сравнивают символы через строки — это эпично, просто напросто эпично.
          Да что особенного, в жабоскрипте, например, это нормальная практика.

          > Плюс еще и не_правильный.
          Угу.
          Ответить
          • >Ну я средний случай оценивал.
            я понял.
            >Да что особенного, в жабоскрипте,
            Шарп — не жабаскрипт. В шарпе это снизит производительность существенно.
            Ответить
        • Хорошо, что его не заставили писать туже фигню для шумерской системы исчисления (60 ричной)

          >Сравнивают символы через строки — это эпично, просто напросто эпично.

          Не всем же доступно понимание char-byte философии) А строка - она и в африке строка. Такая родная. Такая няшная
          Ответить
          • > Не всем же доступно понимание char-byte философии
            А после юникода оно уже не кажется таким простым и очевидным...
            Ответить
            • ну так. в руби например длина строки - это количество байт а не букв.
              Ответить
      • > if ("A" == ...)
        >Жавоёбский йода-стайл
        Что? Разве в сисярпе == работает не так, как в жабе?
        Ответить
        • > Разве в сисярпе == работает не так, как в жабе?
          Нет. В шарпике == для строк перегружено, и сравнивает строки по контенту (аля жабий equals), а не тупо проверяет, что они ссылаются на один и тот же объект, как в жабе.
          Ответить
          • Алилуйя, что, неужто там можно-таки == перегружать?
            Ответить
            • Судя по докам - да, в шарпе есть перегрузки. Но я с ним не работаю, поэтому уверенности нет.
              Ответить
              • Есть. Но перегружать нужно попарно и явно. То есть перегрузил == - перегрузи и != а то не скомпилится. Руби например сам понимает, что a != b есть ! (a == b)
                Ответить
            • Относительно возможностей ООП и типов шарп не стоит критиковать.
              Там очень грамотно это сделано.
              Ответить
      • жабе null для == тоже не страшен, а вот для equals страшен
        Ответить
    • Ничего удивительного, я до сих пор знаю большого насяльника который в if ставит bool переменную, чтобы ниже проверить, выполнился ли его if

      CraxyFright приоткрой тайну, зачем ему в num именно long?
      Ответить
    • И легким движением руки превращаем эту кучу г-на в нечно более похожее на нормальный код:

      long a = 0;
      long.TryParse(Key[startIndex].ToString(),
                               System.Globalization.NumberStyles.HexNumber, 
                               new CultureInfo("en-US"), out a);
      Ответить
      • > new CultureInfo("en-US")

        это я догадываюсь значит что в шарпе тоже нет преславутой "С" локали?
        Ответить
        • InvariantCulture вроде называется
          Ответить
          • в жабе есть аналог? недавно искал - не нашел.
            Ответить
            • А new Locale("C") не работает?
              Ответить
              • проверил - работает.

                проблема: "С" не числится ни в одном списке поддерживаемых жабой локалей.

                официальная тестовая аппликуха из доки тоже "С" не показывает:
                import java.util.*;
                import java.text.*;
                
                public class AvailableLocales {
                        static public void main(String[] args) {
                                Locale list[] = DateFormat.getAvailableLocales();
                                for (Locale aLocale : list) {
                                        System.out.println(aLocale.toString());
                                }
                        }
                }


                ЗЫ официально по доке имя локали соответствует ISO 639. ISO 639 "С" не содержит.
                Ответить
                • Я тоже экспериментально вычислил. По идее жабомашина на юниксе должна инициализировать локаль из переменных окружения, в которых вполне может быть "C", так что в теории new Locale("C") должно работать.
                  Ответить
                  • теперь вопрос - будет работать на виндах? если я чего пофикшу на юниксах (на чем софт и работает) а оно не работает на виндах (на чем все разработчики поголовно сидят) то у меня будут серьезные проблемы...
                    Ответить
                    • Вот этого я не знаю, винды под рукой нету уже лет пять
                      Ответить
                      • на 1.6 `new Locale("C")` вроде и под виндой работает (нашел сервак с jre). но хез, потому что все равно не в документации...

                        PS ха. под виндой у меня похоже все всегда идет на en_US локаль - ни немецкая, ни русская локали эффекта не имеют. но и эксепшена не бросается. (сишная setlocale() послушно возвращает ошибку если что.) вообщем, хез, моя отмазка что я жабы не знаю все еще работает и проблема уже как неделю не моя.
                        Ответить
        • Я написал первое, что пришло на ум. :D
          А так есть, да, Роман вам выше ответил.
          Ответить
      • код выше это не хекс.
        "A" у него равно 11 а у вас будет 10
        и т.д
        Ответить
        • Это хекс, просто неправильный.
          Ответить
          • Программа всегда работает правильно. Просто иногда не так, как хотел программист
            Ответить
            • cleaned
              Ответить
              • Хорошая логика. Хорошее отношение. Мы тебе заплатили, и ты нам должен. Я могу в любой момент перевернуть стол и сказав "ариведерчи" уйти. Если тебя посадили за комп и платят деньги - молодец. Я сел за стол сам и зарабатываю деньги для компании
                Ответить
                • > Если тебя посадили за комп и платят деньги - молодец. Я сел за стол сам и зарабатываю деньги для компании
                  Вспоминается:
                  Если тебя посадили за комп и платят деньги - анскильный заедушный питушок.

                  Эх, не хватает Царя в голове на ГК.
                  Ответить
                  • Кстати а где он? Много уроков задают наверное.
                    Ответить
                    • учит свои, любимые безответной любовью, плюсы
                      Ответить
                      • сишка же
                        Ответить
                        • Мы его переубедили
                          Ответить
                        • это он на людях pure C любит, а фапает на плюсы
                          Ответить
                          • На самом деле это распространённая ошибка - считать, что Царь до посинения что-то любит.
                            Вот, кстати, я раньше как-то так и думал: http://govnokod.ru/13416#comment188231
                            Но Царь не позволил мне продолжать заблуждаться: http://govnokod.ru/13416#comment188262

                            Если говорить кратко, Царь осознал всю бренность бытия и при наличии нескольких вариантов выбирает наименьшее говно.

                            "Чтобы понять лучшее - надо изучить говно. Это основа всего. Изучая говно ты знаешь - как делают питухи и к чему это приводит - и ты уже не будешь делать как питух."
                            Ответить
                            • Доставил такой адский концентрат упоротости, самолюбования и брезгливой беспечной критики всего на свете. Я уже давно его высеры не читал - быстро приедатся.
                              А где он про кресты говорил?
                              Ответить
                              • Вот тут: http://govnokod.ru/13555 про вред ООП есть. Там ещё градус моей упоротости крайне поднялся. А про кресты в целом - это надо искать лучше.

                                "ООП - высер идиотов, которые решили, что домохозяйки могут быть программистами. <...> Я ничего не имею против идей из которых сделали ООП - я ненавижу то говно, которое называют ООП, вернее ООП говного мозга. Юзать что-то это возможность, а не обязанность."

                                Но всё же, считайте меня анскильным питушком, из философии Царя можно вынести для себя что-то полезное. Заботу о перфомансе, критическое отношение к рекламируемым инструментам, стремление к идеалу...
                                Ответить
                                • >Заботу о перфомансе

                                  Да... перфоманс царь любил устраивать...

                                  >критическое отношение к рекламируемым инструментам

                                  Человек ко всему должен критически относиться.
                                  Ответить
                                  • > Человек ко всему должен критически относиться.
                                    На ГК критически относятся к критическому отношению Царя к окружающему миру.
                                    Ответить
                              • Вот ещё немного про кресты:
                                http://govnokod.ru/13177#comment182720
                                http://govnokod.ru/13330#comment186919
                                Ответить
    • показать все, что скрытоУ МИНЯ ЕСТЬ IFON 5S НО Я ЖЫ НИ ХВАСТАЮЗЬ!!!!!!!!!!!!!
      Ответить
    • Напомнило в 1С

      СтрЗаменить(НаименованиеПроводки, " ", "");
      Если ВРЕГ(НаименованиеПроводки) = "ДЕНЬГИСПИЗДИЛИ" Тогда
      .....
      Если ВРЕГ(НаименованиеПроводки) = "ЗАСАЛСУКА" Тогда
      ....

      В 1С примерно так все проверки на документы и написаны.
      Ответить
    • а зачем субстринг?
      Ответить

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