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

    −166

    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
    Функция ЭтоБуква(Буква)
                    Возврат Найти("еоатинркулмДСвПдОсКцчыгзпбТНИьБФхВяРАЗЭйУЕГМЦжщЙШЩЫЛЯЧЬХЪЖЮЁёшъфэюQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", Буква) > 0;
    КонецФункции
     
    Функция ЭтоЦифра(Буква)
     
                    Возврат Найти("1234567890", Буква)>0;
     
    КонецФункции // ЭтоЦифра()
     
    Функция ЭтоБукваИлиЦифра(Символ)
     
                    Возврат Найти("еоатинркулмДСвПдОсКцчыгзпбТНИьБФхВяРАЗЭйУЕГМЦжщЙШЩЫЛЯЧЬХЪЖЮЁёшъфэюQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890", Символ) > 0;
     
    КонецФункции // ЭтоБукваИлиЦифра()

    Из типовой конфигурации БГУ 2.0.
    На первый взгляд реализация забавна :-) Но, в общем-то, это не является говнокодом: просмотрев в гугле различные "рейтинги букв", получил примерно то же самое.
    Тем не менее, можно решить вопрос с помощью проверки кода символа.

    Запостил: Voittamaton, 01 Мая 2014

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

    • показать все, что скрыто1C - полное говно; его разработчики в своё время скакали на моём баобабе, как кенгуру.
      Ответить
      • Судя по тому, сколько по количеству говнокода выкладывается на этом сайте, то 1С вовсе не говно.
        А если навскидку прикинуть, то гораздо больше выкладывается говнокода по С++, РНР, JAVA.

        И вообще, что за дибильная манера хаить тот или иной язык программирования? Или извилина настолько прямая, что не в силах понять, что каждый язык предназначет для своих целей. И нет такого универсального языка, который бы решал абсолютно все задачи.
        Ответить
        • Есть хуевый код и хуевые языки. И в любом языке есть свои недостатки. Почему бы их не обхаять?
          Ответить
          • То, что программисты бывають жопорукими, это я согласен, можно обхаять их код, чтобы другие не наступали на те же грабли.
            Но то что языки хуевые - абсолютно не согласен. Повторюсь, каждый язык решает определенные задачи. То что можно написать на 1С, никогда не напишешь, например, на PHP. И наоборот.
            Ответить
            • да нет, как раз есть именно хуевые языки
              - когда касается дело синтаксиса, выразительных средств, возможностей стандартной библиотеки, производительности
              Ответить
              • С библиотекой и возможностями - да, в одноэссе так всё и обстоит. Я лично знаю двух людей, которые на этом безобразии (даже на 7.7) писали "парсер" названий товаров с разными целями. Вот там творится такой угар содомии, что не будь я морально готов, мои глаза бы вытекли сразу.
                С математикой там тоже куча треша была. Вот, например, мой любимый баг в 7.7
                Если в запросе вызвать функцию, суммирующую значения, над вещественными числами (например, какие-то суммы), эта блядь приводит их к целочисленному. Помогает только магическое подёргивание в виде +1-1.
                Ответить
                • Именно +1, не +1.0? О_о
                  Ответить
                  • Именно целую единицу.
                    Ответить
                    • Возможно, я ошибся, за давностью лет. Нашёл только один похожий баг по описанию. Там суть в том, что если в запросе участвуют ресурсы с разной точностью, точность автоматически усекается до меньшей. Но если явно в выражение ввести константу, то никаких манипуляций с точностью не будет. И, вроде как, плюс ноль не катит.
                      Ответить
                      • Это не баг, а кривизна рук программиста.
                        Нафига делать разные разряды? Если это цена, то например Сумма(15.2). Есть количество, то Сумма(15.3). И так применить ко всей логике.
                        Нужно понимать, что ты создаешь и как это будет работать.
                        Ответить
                        • Э, нет, батенька. Какое право эта тварь дрожащая смеет понижать точность там, где оную тварь не просят?
                          И, почему-то, висит в списке "топ десять известных багов".
                          Ответить
                          • > Какое право эта тварь дрожащая смеет понижать точность
                            Согласно правилам приближенных вычислений, или как они там правильно называются.

                            > И, почему-то, висит в списке "топ десять известных багов".
                            Потому что мозг народа еще со школы безнадежно проёбан калькуляторами и плавучкой, и почти никто уже не видит разницу между 1.00, 1.0 и просто 1.

                            P.S. Баг тут скорее в том, что прибавление единички какого-то хрена исправляет ситуацию.
                            Ответить
                            • Х.з., про это я не думал. По моим воззрениям, если у нас есть яблоко и половина яблока, у нас должно быть около полутора яблок, а не одно.
                              В любом случае, я готов допустить, что такая задумка вполне легальна. Но! Никаких предупреждений о таких граблях нет, ни в документации, нигде.
                              Ответить
                              • >есть яблоко и половина яблока, у нас должно быть около полутора яблок
                                Или хотя бы исключение/ворнинг о том что мы хотим сложить целое с дробным, а яблоки сплюсовать яблочным желе.

                                И чтобы годные целые яблоки не неявно не резались и не кастились в желе.
                                Ответить
                        • >Это не баг, а кривизна рук программиста.
                          Программиста, который делал 1С.
                          Неявные преобразования это всегда плохо (даже расширения иногда портят жизнь). И особенно понижение точности.

                          >Нафига делать разные разряды?
                          Могут совмещаться разные модули кода, а в них разная точность, мог быть рефакторинг и не везде поменяли. Примеров - миллион.
                          Ответить
    • Почему 3я функция не использует первые две?
      Ответить
      • Видимо, по той же причине, по которой идёт поиск по строке, а не по коду символа :-)
        Ответить
      • потому, что два раза вызвать "Найти" дороже чем один.
        Ответить
      • Я поставил минус потому, что ткнул в пустое место в окне и оно оказалось минусом.
        Сайт только у меня глючит?
        Ответить
    • вотжеж оптимизаторы хреновы
      Ответить
    • cleaned
      Ответить

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