1. JavaScript / Говнокод #13630

    +159

    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
    var sym = new Array();
    sym["a"]=0;sym["c"]=1;sym["d"]=2;sym["e"]=3;sym["f"]=4;sym["g"]=5;sym["h"]=6;sym["k"]=7;sym["l"]=8;sym["m"]=9;sym["n"]=10;sym["p"]=11;sym["q"]=12;sym["r"]=13;sym["s"]=14;sym["t"]=15;sym["u"]=16;sym["w"]=17;sym["x"]=18;sym["z"]=19;sym["2"]=20;sym["3"]=21;sym["4"]=22;sym["5"]=23;sym["6"]=24;sym["7"]=25;
    
    function convertCode(field)
        {
            var code = $(field).val().toLowerCase();
            var convertedCode = sym[code.charAt(0)];
            
            for (var i = 1; i < code.length; i++)
                convertedCode += "_" + sym[code.charAt(i)];
    
            $(field).closest(".captcha-block").find("#captchaCode").val(convertedCode);
        }

    Я не осилил, что делает это говно? (Сбербанк-Онлайн)

    Там еще кодировка win-1251 и тег <head> открывается на 30й строке кода. Нет, я не фанат обфускации, но КАК?!

    Запостил: CRRaD, 20 Августа 2013

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

    • > что делает это говно?
      Тормозит (массиво-объект, авторский join, DOM-фэйлы), вероятно, использует несколько элементов с одним ID, а также пишет в какое-то поле строки вида
      "4_16_1_7_undefined_10_5_14_undefined_3_13_undefined_0_10_7"



      Товарищ, помни! Создавая подобный код, ты даришь царю ещё один аргумент в пользу сишки!!!1111
      Ответить
    • Вот как меня бесит отсутствие foreach в js, блядь.
      Ответить
      • for..in же есть
        Ответить
        • Только его убогость и костыльность сравнима с отстуствием оного (ибо безопаснее просто не юзать).
          Ответить
          • и в чем же она?
            Ответить
            • bormand и я где-то недавно писали.
              Начиная с того как будет работать такой код
              while (a in {'a':1,'b':2}){}
              for (var a='a';a in {'a':1,'b':2;}){}

              Заканчивая тем что он перебирает методы-прототипов, работает медленней и содержит кучу граблей.
              http://stackoverflow.com/questions/500504/why-is-using-for-in-with-array-iteration-such-a-bad-idea

              Так что такой for-in, можно расценивать как его отсутствие.
              Ответить
              • иногда это единственный способ походить по "массиву", в котором индексы не проходятся по i++
                вот прямо как в случае в ОП
                Ответить
                • >единственный способ
                  Object.keys
                  Ответить
                  • Цитата с MSDN: Поддерживается в следующих режимах документов: стандартный режим Internet Explorer 9 и стандартный режим Internet Explorer 10.

                    Слоупоки такие слоупоки ;) Хотя авторы js тоже слоупоки, раз только в жс 1.8.5 додумались внедрить свойство, которое надо было запилить сразу, в первой же версии.
                    Ответить
                    • Да он только в 9-ом хоть на браузер стал начал становится похожим.
                      Ответить
            • Каждый раз как я использовал for-in в js - я горько жалел об этом впоследствии. Потому для меня в js нет for-in, потому не минусовал anonimb84a2f6fd141, т.к. в js он таки есть, то я его и не плюсовал.

              Тут на самом деле вопрос шире.
              Ответить
            • Сегодня конец недели, потому уделю этому время.
              Если сильно исхитриться и вложить все знания js(коими я не обладаю, да и лень) и смекалку (например использовать генераторы-итераторы), то можно написать качественные, быстрые хелпер-методы, с которыми использование for-in станет удобным и приобрет смысл. Примерно так:
              for (var in $array(a))
              for (var in $values(b))
              for (var in $entries(b))

              Но только вот делать такое лень. А должны делать разрабы браузеров и языка.
              2 bormand
              >>>додумались внедрить свойство, которое надо было запилить сразу, в первой же версии.
              Почему не внедрили Object.values и Object.entries, который вернет кортеж из двух элементов:
              [key,value]?
              Ведь доступ по ключу отнимает какое-то время
              Ответить
      • Ну ты ж любитель замыканий, на каждом шагу про них твердишь, вот и юзай.
        [6,5,4,3,2].forEach(function(a) {
            console.log(a);
        });

        Вменяемым же людям придется принять и полюбить императивный for, т.к. это самая быстрая и короткая версия.
        С тем различием что замыкание изолирует переменную цикла в своем неймспейсе - иногда это полезно.
        Ответить
    • > открывается на 30й строке кода
      Главное версию хтмл не указывать ;) Тогда браузер молча сожрет любое говно и не подавится. У нас как-то на внутреннем сайте висела страничка, в которой ни одна <tr> не была закрыта. Так эта таблица во всех браузерах показывалась нормально.
      Ответить
      • Производители браузеров понимают, кто пишет сайты, поэтому пытаются хоть как то разрулить)
        Ответить
        • > Производители браузеров понимают, кто пишет сайты, поэтому пытаются хоть как то разрулить)
          Писатели сайтов понимают, что браузер схавает. Поэтому не пытаются писать правильный код. Порочный круг ;)
          Ответить
          • Не совсем о том, но накипело - периодически натыкаюсь на сайты по программированию, даже web программированию, написанные на joomla. Единственное что в них своего - копирайты. И при этом эти люди считают себя гуру.
            Ответить
            • > написанные на joomla
              Вы так говорите, как-будто это что-то плохое. Если бы я делал свой сайт по программированию - я бы тоже его сляпал на джумле\вордпрессе, не писать же ради этого свой движок ;)

              > Единственное что в них своего - копирайты.
              Т.е. все статьи спизжены?
              Ответить
              • > Если бы я делал свой сайт по программированию - я бы тоже его сляпал на джумле\вордпрессе, не писать же ради этого свой движок ;)
                Какова вероятность, что к тому времени когда вы будете способны сделать достойный прочтения сайт по веб-программированию, у вас не будет собственного движка (или освоенного фреймворка, как минимум)?
                По другим же аспектам программирования - тут понятное дело, что разумно взять попавшийся под руку блоговый движок.
                2 kegdan: А ты себе представлял, что чуваки оторвутся от шитья контроллеров что бы сделать себе бложек уютненький? На статьи-то поди еле времени хватает.
                Ответить
                • > А ты себе представлял, что чуваки оторвутся от шитья контроллеров что бы сделать себе бложек уютненький? На статьи-то поди еле времени хватает

                  Таким чувакам ну нафиг не сдался собственный сайт - хабры хватит с лихвой.
                  Ответить
                  • > хабры хватит с лихвой
                    easyelectronics, radiokot, хабра то зачем? :)
                    Ответить
                • Я знаю десять имен мальчиков которые внесли весомый вклад в программирование не создав ни одного сайта, ни тем более ЦМС.
                  Ответить
                  • Вы точно читали мой комментарий?
                    > достойный прочтения сайт по веб-программированию
                    Так всё-таки вклад в программирование или в веб-программирование?
                    Ответить
                    • ОК, таких может быть человек пять всего. Ну, например, Винт Серф, Роберт Кан...
                      Ответить
                      • Тото же. Вот я и сказал, какова вероятность? Ничтожна.
                        Ответить
                        • Вы таки ничего не поняли...
                          Ответить
                          • Из всех людей учавствующих в разработке сайта, верстальщиков только какая-то часть, и обычно далеко не самая значительная. Остальные люди, которые имеют такое же отношение к веб-разработке занимаются базами данных, прикладными программами обслуживающими эти базы. решающие всевозможные задачи связанные с функционированием сервера - и никто из этих людей может даже никогда не создать и одного сайта. Я за всю жизнь сделал может 3-4, и то, это было либо по дружбе, либо энтузиазм. По работе мне только один раз приходилось этим заниматься, и то, всего пару месяцев.
                            Ответить
                            • Мистер бетмен (у Вас просто логин на летучую мышь похож, ничего личного), согласитесь, что если бы Вам нужен был сайт о веб программировании, вы бы писали его сами (ибо на энтузиазме) И как бы не очень бы хотелось, что бы оно было собрано на низкопробной джумле на 30 минут
                              Ответить
                              • Если это что-то типа персонального блога, сделал бы из Вордрпесса скорее всего, ну или Орг + Мьюз. Сам бы ничего такого писать не стал - мне это не интересно / вообще не вижу смысла.
                                Ответить
                              • самый лучший блогосайт - это статические html-файлы.
                                Ответить
                                • Да ну. На разметку и копипаст бойлерплейта куча времени уйдет.

                                  Проще один раз поставить джумлу вордпресс или вики, или даже просто где-нибудь зарегиться и не связываться с серверами и хтмл, чем постоянно трахаться с этим хтмл.

                                  На тех же вики разметка проще у удобней на порядки. А в цмсках вообще визивиг редакторы. Если цель сайта именно контент - эти способы явно лучше хтмл статики.
                                  Ответить
                                  • Я имею в виду
                                    1. написал в чем нибудь вроде rst
                                    2. прогнал через генератор html со стилями
                                    3. выложил генерёную статику
                                    4. PROFIT

                                    Движки ещё какие-то изобретать
                                    Ответить
                                    • > прогнал через генератор html со стилями
                                      Генератор запускать, статику выкладывать...

                                      > Движки ещё какие-то изобретать
                                      Дык полно же готовых цмс и вики... И ставятся даже нубом в пределах получаса... А если не хочется ставить - пожалуйста, есть всякие блогоплатформы типа хабра и жж. И никакого секса с генерацией и выкладыванием. И стили придумывать не надо, если готовые (или скачанные где-то рядом) устраивают.

                                      Я просто не пойму, зачем такая сложная технология, если человеку не хочется связываться с вебом, а хочется просто запилить сборник тематических статей? :)
                                      Ответить
              • Такие сайтики делают не для народа, а исключительно для раздувания чувства важности.

                > все статьи спизжены?

                тут хз, не проверял.
                Ответить
                • Ну если не все статьи спизжены, то не только копирайты же свои? :) Все-таки сайт это прежде всего статьи и контент, и только потом движок.
                  Ответить
        • Где-то в тексте работы, о которой говорит пост http://habrahabr.ru/post/174057/, была цитата из кода какого-то движка, что-то вроде "// А это потому, что тупые пользователи пишут код после закрытого <body>".
          Ответить

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