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

    +183

    1. 1
    while (c.charAt(0)==' ') c = c.substring(1,c.length);

    Особый ltrim

    Запостил: 3.14159265, 04 Февраля 2013

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

    • Пакман жив!
      Ответить
    • Ну подумаешь, тримить строки за O(n^2). Это же copy on write!!!11 А вдруг строка изменится во время трима?

      Ах да, в JS нет многопоточности.
      Ответить
      • ну если очень захотеть, то есть
        Ответить
        • > ну если очень захотеть, то есть
          А потом многопоточный жабоскрипт захочется развидеть, но, увы, уже не выйдет...

          P.S. А есть, кстати, хоть одна реализация js с настоящими тредами?
          P.P.S. Искренне надеюсь, что нет...
          Ответить
          • River Trail и PJs разве что, но все равно не с настоящими.
            Ответить
      • Ну коровку можно и вот так сделать, без излишних копирований:
        i = 0;
        while (c.charAt(i) == ' ')
            i++;
        c = c.substring(i);
        Ответить
        • В JS это проканает, а вот в многопоточном языке кто-нибудь может присвоить c другую строку, пока мы крутим цикл. Правда, если c - разделяемая переменная, то вся работа с ней вплоть до и включая присваивание substring'а обратно с всё равно должна быть обёрнута в критическую секцию, так что в этом коде ошибки нет.
          Ответить
        • никогда не называйте свои переменные С

          http://habrahabr.ru/sandbox/56199/
          Ответить
          • > никогда не называйте свои переменные С
            Obvious fix: никогда не пользуйтесь вижуалкой, или хотя бы отключайте эту ебанутую опцию про уникод в именах ;)

            P.S. Какого хуя она вообще включена по дефолту?
            Ответить
            • я не пользовался вижуалкой) у меня был Notepad++) там всё было чисто визуально. Статья моя, реальный случай из жизни.
              Ответить
              • > я не пользовался вижуалкой
                А компилировали чем? ;) Это же компиляторопроблема, а не проблема редактора.
                Ответить
                • ребят, ну не смешно уже... внимательней читать надо) язык был JavaScript, он в компиляции не нуждается
                  Ответить
                  • А тьфу, простите старика. Я почему-то подумал про с/с++...
                    Ответить
                    • всякое бывает по утру)
                      Ответить
                    • а вообще, это Пунто Сучер постарался незаметно для меня перевести переменную в кириллицу (звук на работе, как всегда не нужен, поэтому его нет)
                      Ответить
                      • > это Пунто Сучер
                        Никогда не понимал, зачем его ставят... Ну может быть блондинке с вконташечкой он чем-то поможет, но вот при программировании он только бесит, ибо в коде дохрена слов, которых нет в его словаре, но которые по счастливой случайности могут оказаться в противоположном.

                        Имхо, абсолютно бесполезная прога. Ну разве что нужна тем, кто набирает предложение целиком, в это время глядя на клаву, и совсем не глядя на экран. Но я искренне надеюсь, что среди разрабов таких почти нет...
                        Ответить
                        • Насчет программирования согласен. Но я теперь сильно привык к нему. Настроил под себя и... в общем люблю я его... Даже после такого случая)
                          Ответить
                        • у него есть галочка, которая переключает его в ручной режим - исправление буфера/выделения только по какой-нибудь кнопке (например, break)
                          висит в трее, жрёт мало, используется редко, но иногда за чужим компом ловлю себя на мысли, что машинально жму break, ничего не происходит и приходится перенабирать последнее введенное слово
                          Ответить
                          • золотые слова, Юрий Бенедиктович...
                            Ответить
                          • >висит в трее, жрёт мало, используется редко
                            Яндекс-бар поставил?
                            >него есть галочка, которая переключает его в ручной режим - исправление буфера
                            Не нужен. Есть GPLный recaps.

                            > Пунто Сучер
                            LOL

                            >никогда не называйте свои переменные С
                            Уже джвенадцать лет как. А вообще лучше и удобнее писать всё на англицком, и код, и комменты.
                            Ответить
                            • > How often do you type a whole URL in the browser’s address window only to find out you’ve been doing it in Hebrew or Russian?
                              а это, значит, нужен?
                              Ответить
                              • а что ви видите тут плохого?
                                Ответить
                                • если я буду набирать URL и замечу, что сделал это на иврите, я весьма охуею и не буду ничего нажимать до приезда карантинной бригады
                                  Ответить
                                  • I’ve never quite understood the weird choice made at Microsoft for the awkward combination that you have to press in Windows to change the keyboard layout. Having used computers in a multilingual environment most of my life (mostly switching between Hebrew and English, but sometimes writing a bit of Russian as well), I found the Alt-Shift combination very annoying.

                                    All the while there was that nice big CapsLock key, that nobody has used since the days of the typing machine.


                                    За этим всем выдиранием цитат из контекста шибко знаменательно что человек набирающий на иврите не зажидился выложить исходный код (несмотря на его простоту) под GPL.

                                    А rусские разрабы Пунто Сучера поцчему-то нет.
                                    Ответить
                                    • какой жопэель?
                                      гусские газгабы в прошлом десятилетии даже пытались монетизировать свою убер-хрень - был же даже говнопоисковик punto.ru
                                      пока яндекс не сжалился и не выкупил их с потрохами
                                      Ответить
          • показать все, что скрытоvanished
            Ответить
      • А субстринг случайно не возвращает ли тупо указатель на начало и длину, не делая копирование, тем самым давая O(n) для данного лагоритма?
        Ответить
    • Чем лучше в java-script операцию trim заменить?
      Ответить
      • myString.replace(/^\s+|\s+$/g/, '');
        Ответить
        • /^\s+|\s+$/g
          fixed
          Ответить
          • Все равно плохо. trim в большинстве языков, где он существует, убирает непечатные элементы. Т.е. нужно \s заменить на [\x00-\ ], или, если брать за основу код Люра, то, сократить все до одного цикла, выбросить один из substring и != заменить на >.
            Ответить
        • str.match(/^\s*([\s\S]*?)\s*$/)[1]

          Давно не писал на жаваскрипте, могу и ошибиться.
          Ответить
      • function supertrim(s) {
        ret=s;
        for(i=0;i<s.length();i++)
        if(ret.charAt(i)!=' ') {
        ret=res.substring(i);
        break;
        }
        for(i=ret.length()-1;i>=0;i--)
        if(ret.charAt(i)!=' ') {
        ret=ret.subscring(0,i);
        break;
        }
        return ret;
        }

        устроит ли говногурмана такая синтетика?
        Ответить
      • $.trim
        Ответить
    • Неочевидный код. Почему бы просто не прочесать строку один раз до тех пор, пока не встретится любой, отличный от пробела символ, возвратить его индекс и вернуть подстроку?
      Ответить

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