Пора завязывать использовать пробелы вместо табуляции в коде


    Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
    Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

    Итак, под катом — почему табы лучше пробелов, самые значительные заблуждения касательно табов и как ими правильно пользоваться.



    Начнём с того, что большинство людей (по крайней мере на Хабре) предпочитают табы.

    По ссылке есть очень классный комментарий от GreyCat:
    На самом деле странно то, что многие до сих пор не отличают indentation и alignment. Ну, вот это — indentation:
    for (int i = 0; i < 10; i++) {
        if (a[i] == 0)
            do_something(i);
    }
    


    А вот это — alignment:
    int some_variable = 0;
    int v1            = 0;


    Первое можно делать и табами, и пробелами, но когда делаешь табами — каждый может подстроить ширину indent'а на свой вкус и ничего никуда не едет. А второе — строго пробелами.


    В IDE есть опция Smart Tabs для этого:


    Если правильно использовать табы (а именно — только для indentation) — можно без проблем менять размер табов не нарушая стиль программирования.

    2 пробела на таб:

    5 пробелов на таб:

    9 пробелов на таб:


    Так каких проблем мы лишаемся?


    1. Каждый программист может настроить длину табуляции под свой вкус. Всегда работает на практике. Когда код с большой вложенностью — можно поставить ширину табуляции в два пробела, иначе — в четыре.
    2. Легче работать с посторонними библиотеками. Какие-то библиотеки поддерживают стиль с шириной таба в два пробела, какие-то с шириной в четыре пробела. Только использование табов не накладывает ограничение на стиль.

    Процитирую пару мыслей из предыдущего топика:
    Тяжело работать с проектами, где используются библиотеки, содержащие в тесте табуляции. Предположим, в одной библиотеке табуляция равна 3 символам, в другой 4 символам. А вы в проекте используете 2 символа. В результате какая-то часть кода у вас будет отображаться в редакторе со сбитым форматированием.

    На самом деле в проектах, которые используют табуляцию таких проблем нету — так как табуляция безразмерна, а вот поддерживать одновременно пару библиотек с разным размером пробело-табуляции становится проблематичным, т.к. уже нельзя пользоваться tab (чтобы IDE заменяла табы на пробелы). Конечно, есть шанс решить такую проблему разными проектами с разными настройками, но это тот еще костыль, да и башку все-равно сносит от разных размеров вложенности.

    Легко пустить козла в огород. Скажем у вас табуляция равна 4 пробелам. Кто-то что-то чуть-чуть поправил, используя другой размер табуляции или явно вставив пробелы. У него все смотрелось нормально, а у вас строчка кода куда-то уедет.

    Аналогично, табуляция — безразмерная. Такая проблема есть только в проектах, которые используют пробелы. Там где используются табы — они могут быть хоть 2, хоть 10 символов шириной.

    Надо постоянно настраивать различные редакторы под нужный вам размер табуляции. Даже если вам нужно просто посмотреть код не правя. Иначе все разъезжается. Особенно это не удобно, когда приходится что-то делать со своим кодом на сторонней машине.

    Допустим, я открываю Kate, чтобы по-быстряку поправить код в каком-то файле. Оппа, размер табуляции два пробела. Надо лезть в конфиг. А в соседнем файле из другой либы — четыре пробела. Придётся пользоваться пробелом вместо таба для отступов, ужас. С табами такой проблемы нету.

    Лишние сложности тем, кто работает одновременно с проектами, где по стандартам кодирования требуются разные отступы. Если стандарты требуют использование табуляции, то это ещё тот вечно ноющий зуб. В случае пробелов опять-таки все намного проще.

    Как выше разобрали, такая проблема есть именно с проблемами, а не с табами.

    А еще дополнительно у пробелов есть такие недостатки, как невозможность быстрого перемещения стрелочками клавиатуры (щёлкает каждый пробел, а не через блок), возможность допустить ошибку (поставить в одном месте 3 пробела вместо 4, чем порушить дальнейшую структуру), увеличение размера файла и куча всего ещё.

    Вывод


    У пробелов нету ни одного существенного преимущество по сравнению с табами, при этом мы не сковываем программиста в рамки и не заставляем его мучаться с слишком маленькими (или слишком большими) для него табами.

    Главное


    Не так важно, что именно вы используете. Важно, чтобы вы следили за порядком своего кода и всегда придерживались одного и того же стиля. Включите отображение табов/пробелов, иногда меняйте размер табуляции на другой и пробегайте глазами код, чтобы удостоверится, что у вас где-то не вставились пробелы вместо табов или табы вместо пробелов.

    UPD: примечание согласно комментариев


    Я давно хотел написать статью про табы. Но не про «Табы VS Пробелы», а именно про то, как пользоваться табами правильно. Комменты подтвердили, что многие не знали про indentation и alignment. Смысл этой статьи совершенно не в том, что правы все, кто использует табы. Есть стандарты кодирования, есть особенности языка, есть личные предпочтения.
    Самое главное — знать правила расстановки отступов и уметь ими пользоваться. И никогда не смешивать два стиля. Заметьте — не «не смешивать табы и пробелы», а не смешивать два стиля.
    Лично я рекомендую использовать подход, описанный в топике, но только в том случае, если стандарты кода, с котором вы работаете не подразумевают что-то другое.
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 397
    • +2
      В руби 2 пробела — и никаких проблем) Не очень согласен с тобой — мало кто пользуется «умной табуляцией» — на практике никто не заморачивается настройкой и лепят как хотят.
      • +35
        Ну это проблемы не табов, а горе-программистов) Пробелами тоже ведь можно отступы сделать ужасными ;)
        • +5
          На самом деле у нормальных разработчиков такая проблема не стоит — они используют принятый для языка стандарт кодирования. А вот кривых товарищей так просто не переучить, даже вытутаирав этот самый стандарт кодирования у них на лбу и дав зеркало. Против таких помогают только хуки в SCM и удар молотком по пальцам за кривые отступы.
          • +18
            Допустим у меня в одном проекте код на C, C++, Perl и Bash… по каждому идти читать «принятый» для языка стандарт, а затем в редакторе постоянно переключать с одного на другое?

            Не надо выдумывать сложностей. Дома у меня большой дисплей, там таб широкий — это удобно. А на нетбуке в дороге экранчик маленький, там таб узенький — опять же удобно. А те кто делают отступы пробелами лишают меня такой возможности.
            • НЛО прилетело и опубликовало эту надпись здесь
              • +1
                Не важно сколько уровней вложенности код. Там где табы и малая вложенность я могу открыть на нетбуке два листинга сразу. Там где строго 4 пробела — этого уже не сделаешь, ибо не помещается.

                Нет ни единого аргумента, чтобы использовать пробелы вместо табов для отступов.

                p.s. вы правда считаете, что всякий алгоритм можно отрефакторить до 2-4 уровней?
                • –5
                  p.s. вы правда считаете, что всякий алгоритм можно отрефакторить до 2-4 уровней?

                  да, причём не только можно, но и нужно :)
                  ну и функции декомпозировать, если больше 2х сферических экранов.
                  • +2
                    На скриншоте типичный кусок кода виртуальной машины. Не мой, но насколько я разбираюсь в виртуальных машинах, и насколько могу оценить код, отрефакторить там что-либо без потери производительности и/или читабельности практически невозможно. Да и не нужно.

                    И да, 2000 строк кода это одна функция.



                    p. s. автор этих строк профессионал с огромным опытом, работающий в одной крупной и всем известной ИТ-компании.
                    • –9
                      >отрефакторить там что-либо без потери производительности и/или читабельности практически невозможно.

                      Я вот прекрасно вижу ворох if-then-else, которые меняются свичами.
                      • +4
                        это совсем нехороший выход, ибо будет n проверок, вместо одного табличного перехода, как правило.
                      • +1
                        switch -> call table а внутри функций из этой таблицы будет вложенность 2-3, судя по коду.
                        На производительности это ни скажется ни разу, ибо современные компиляторы сами используют такой подход при генерации кода.
                        Единственный минус такой замены в плюсах/си только то, что мы не сможет в case'ах падать вниз, что самом по себе является дурным тоном.
                        Ну вроде такого:
                        
                        case 'a':
                            doSomeForA();
                        case 'b'"
                            doSomeForAB();
                            break;
                        

                        Ну а насчет «красивости» — мне свитчи совсем не нравятся, использую таблицы вызовов довольно часто. Здесь дело вкуса.
                        • +5
                          На производительности это скажется значительно. Могу сказать наверняка, поскольку достаточно поэкспериментировал с интерпретаторами ARM CPU, Java, ECMAScript.
                          1. Вызов функции сопровождается как минимум сохранением адреса возврата на стеке, а зачастую еще и регистров, что совсем не нужно в случае со switch.
                          2. Компилятор может соптимизиоровать безусловный переход на начало switch + вычисляемый переход на нужный case в один переход, добавляемый после каждого case. С функциями из call table такая оптимизация невозможна.
                          3. Со switch «горячие» указатели (Instruction pointer, Stack pointer и т.п.) будут локальными переменными и закэшируются в регистрах. С функциями и таблицей переходов это будут либо глобальные переменные, либо локальные переменные, передаваемые по ссылке. И то, и другое менее эффективно.

                          В GCC есть computed goto, что хорошо подходит для написания эффективного интерпретатора, однако это не входит в стандарт С, и другими компиляторами не поддерживается.

                          Мне понравилось решение этой проблемы с помощью макросов CASE/ENDCASE/DISPATCH, которые могут быть раскрыты в switch/case, computed goto или call table в зависимости от условий.

                          CASE(opcode1)
                              handle_opcode_1;
                              DISPATCH(1)
                          ENDCASE
                          
                          CASE(opcode2)
                              handle_opcode_2;
                              DISPATCH(2)
                          ENDCASE
                          
                          • +4
                            хе, вы правы, ~15% разница.
                            Основная проблема в том, что компилятор не распознаёт то, какую функцию мы вызываем. И не может соптимизировать — инлайн не выполняется, оптимизация по регистрам тоже невозможно, так как не известно в каком окружении вызывается табличная функция, и какие регистры свободны, для case'ов такой проблемы нет.
                            Действительно, насчет производительности я был не прав.
                        • +3
                          Избавиться от дублирования кода — это первое.

                          Второе — инвертировать if. То есть заменить
                          if (cond) {
                              // do something
                          } else {
                              // error
                          }
                          на
                          if (!cond) {
                              // error, break
                          }
                          // no error
                          // do something

                          И никакой многоступенчатой вложенности.
                          • 0
                            А можете объяснить, почему этот коммент минусуют?
                            • +3
                              ну, наверно хотя бы потому, что множественные точки выхода из функции — это тоже тема для холивара.
                              • 0
                                А кто говорит про множественные точки выхода из функции? Там же case, так что выхода из функции нет, только несколько break. Это ведь не смертельный грех? :)
                            • 0
                              Вот сколько уже борюсь с этим — не помогает.
                              Ваше предложение плохо тем что вы подменяете логику работы кода и ухудшаете его читабельность.
                              Вместо того чтобы сказать при определенном условии — сделай то-то и то (например — если прошел запрос к базе данных — выведи ответ на веб страницу), а если упало — обработай ошибку. Вы меняете его на если что-то упало — выведи ошибку, а вот если не упало — сделай то-то (если запрос не прошел — выведи ошибку, а если прошел — напечатай информацию). Это намного более непонятно, тк более специфичная или даже исключительная ситуация обрабатывается раньше чем нормальная логика приложения.
                              • +2
                                Читабельность таких замен субъективна, сравните:
                                if ($user)
                                  if ($user.has_right('hello')
                                    if ($name = $user.getNameFromDB())
                                      echo "hello {$name}";
                                    else
                                      throw new DBEcxeption;
                                  else
                                    throw new ForbiddenException;
                                else
                                  throw new NeedAutenticateException;
                                

                                и
                                if (!$user)
                                  throw new NeedAutenticateException;
                                if (!$user.has_right('hello')
                                  throw new ForbiddenException;
                                if (!($name = $user.getNameFromDB()))
                                  throw new DBEcxeption;
                                
                                echo "hello {$name}";
                                

                                А представьте, что таких проверок десяток? Даже просто посмотреть какое исключение выбросится для не сработавшего условия где-нить на 5-м уровне вложенности может быть не просто в первом варианте. Да даже выделить глазом сразу где собственно основной код. А во втором, по-моему, проще — глаз пробегает по кучке проверок, не вникая в их суть, и останавливается на основном коде. Главное, чтобы более специфичная или исключительная логика была элементарна — если не получается уложиться в 1-2 строчки, по которым с первого взгляда видно, что они обрабатывают специфическую ситуацию, то надо их выделять в функцию/метод с соответствующим именем.
                                • 0
                                  Да, тут это ещё не очень очевидно. Куда очевиднее, когда непосредственно кода больше (много строк) и вложенность повыше.
                                  • 0
                                    Слушайте, не могу понять, что это за язык)
                                    • 0
                                      Смесь бульдогапитона с PHP :) Надо завязывать с django :)
                                    • –1
                                      Первый пример по мне читабельней тк явно выражает логику кода:

                                      если пользователь зарегистрирован,
                                          если пользователь имеет право на просмотр записи
                                              если эта запись присутствует в базе данных
                                                  то нужно вывести ему эту запись


                                      (кстати про доступность информации из базы — вполне можно вынести проверку доступности именно в тот код, кде доступ происходит — более логично)

                                      Вторая запись мне говорит:

                                      если пользователь не зарегистрирован
                                          соощить обо ошибке
                                      если пользователь не имеет прав
                                          сообщить об ошибке (примерно на этом месте я забываю зачем я вообще
                                                              полез в эту функцию)
                                      если записи не существует в базе
                                          сообщить об ошибке
                                      вывести результат


                                      вы говорите об абстрактной читаемости и красоте, а я о практической — которая помогает понимать — что код делает и зачем он был написан.

                                      От большой вложенности стоит спасаться — это факт, но для этого есть другие средства:
                                      1) лучшая локализация места в котором происходи ошибка
                                      2) extract method
                                      • 0
                                        Вот как раз extract method слабо применимо для улучшения понимаемости кода без такой инверсии условий по-моему. От вложенности if мы перейдём к вложенности методов, да ещё с передачей кучи параметров по цепочке (либо использование глобальных переменных в широком смысле слова) и возвратом значений назад по этой цепочке.

                                        Кончено, код
                                        if ($user)
                                          echo getNonEmtyNameFromDBIfUserHasRight($user);
                                        else
                                          throw new NeedAutenticateException;
                                        

                                        читабельней любого варианта, но, имхо, как раз читабельней абстрактно.

                                    • 0
                                      Знаете, сколько раз приходилось таким образом разворачивать логику из семиступенчатых if, читабельность кода только улучшалась. Потому что когда вложенность высокая, читабельность падает катастрофически.

                                      И логику никто не подменяет. Она остаётся прежней. Ведь суть логики — только если все проверки пройдены, выполнить код.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                    • 0
                                      Это кусочек в 70 строчек, ну вынесите вы все дублирующиеся строчки в отдельные макросы. И будет у вас штук 100 разных таких макросов. Каким образом это улучшит читабельность?
                                      • +3
                                        Улучшит как минимум поддерживаемость, плюс защитит от возможных багов, когда где-то что-то поменял, а в 1-2 местах — забыл (просмотрел, пропустил, отвлекли, и т.д....)
                                        • +3
                                          Да, пожалуй, нечего возразить. Неудачный фрагмент привел.
                                    • +1
                                      Ну да, тов. Щ мы по его коду узнаем :)
                                      • 0
                                        Только он Ш ;)
                                        • 0
                                          Вы с ним не так давно знакомы :)
                                          • 0
                                            Я с ним и не знаком, просто пользуюсь его разработками.
                                      • +1
                                        Узнал код, долго смеялся :).
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      • +1
                                        Два листинга нужно чтобы в одном писать код, а второй листинг служит документацией. Особенно удобно в проектах с >100 000 строк кода.
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                          • +1
                                            Nginx написан на Си, я пишу для него модули.
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                              • +1
                                                Это если у вас есть документация.
                                                • 0
                                                  Да и в любом случае, зачем постоянно нажимать пару клавиш, если ее можно, также как и еще один листинг, открыть рядом. =)
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                        • +2
                                          Когда пишу на си и привязываю что-то, то просто необходимо перед глазами видеть хидер. Либо документацию.
                                          • +3
                                            Хедер. От слова head. Извините.
                                            • 0
                                              Хедер — это еврейская вероисповедная начальная школа.

                                              А от слова «head» («хэд») — хэдер.
                                              • +3
                                                Извините, я не знаком с еврейскими традициями. Но хорошо, когда рядом есть знающие люди ;)
                                                • –1
                                                  Извините, я также не знаком с еврейскими традициями. Но достаточно любить русский язык для того, чтобы не плодить в нём омонимы.
                                                  • +1
                                                    Между прочим, гласный звук в head все же ближе к «е», чем к «э».
                                                    Head в транскрипции — [hed], в отличие от, к примеру, stack, имеющего транскрипцию [stæk]. Во втором случае, как раз, нужно транслитерировать как «стэк».
                                                • +1
                                                  «заголовочный файл», так проще :)
                                                • 0
                                                  А транслитерация и транскрипция английского на русский вообще дело не благодарное. Особенно в ИТ: меня, например, особенно раздражают слова «тег», «кеш», «фреймворк» и т. п., где английская «a» «переводится» на русский как «e».
                                                  • 0
                                                    Странно, что раздражает. Это как раз самый распространенный вариант транслитерации.
                                                    Сочетание «ei» (дающее дифтонг) — «ей»,
                                                    Буква «a» в закрытом слоге (и это не английское «а», а полудолгий звук, которого в русском вообще нет) — «е», допустимо также «а».
                                                    • 0
                                                      Вот и раздражает своей распространенностью :) Лично мне нравится «э» — тэг, кэш, хэш, фрэймворк. Причин объяснить не могу, просто нравится :)
                                                    • 0
                                                      «каш»!
                                                      «Когерентность каша» :)

                                                      Меня, лично, очень радует такой вариант заимствования: «читается КАК пишется(ближайшее слово ИЗ ( дословный_перевод(), дословный_перевод_корней(), транслитерация() ))».
                                                      Типа: «action» — «акция», «dataform» — «датаформа».
                                                      • 0
                                                        Радует, конечно, в кавычках.

                                                        А вообще — добрые, необычные искажения слов при заимствовании идут языку и его носителям только на пользу.
                                                        Чего стоит одна только «вьюшка» против монструозного «представления» на устах суровых ораклоидов.
                                                        • 0
                                                          Когерентность кэша :)

                                                          Дословный перевод обычно всё же не плох, если переводится нужное значение слова, а не первое попавшееся, особенно если у этого первого попавшегося несколько значений в русском языке, в общем «действие», а не «акция»
                                                • +2
                                                  Зачастую удобно видеть перед собой заголовочный файл или, к примеру, контекст использования функции, вместо того чтобы постоянно переключаться Ctrl+Tab'ом между вкладками.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                    • +4
                                                      Вопрос: вы когда-нибудь писали более-менее серьёзный проект на C?
                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                        • +1
                                                          >Жизнь учит С++ программистов писать простой код, который можно достаточно быстро и легко понять.

                                                          К сожалению, не всех. И код приходится читать… хм… всякий.
                                                          • +1
                                                            Использование стороннего кода не рассматриваете?
                                                            • +1
                                                              Загляните к примеру stdio.h от glibc… Да вообще в любой GNU'тый исходник. Монитор долго отмывать надо будет.
                                              • +1
                                                Можно взять весьма распространённый C++. И таки какой же для него стандарт кодирования принят? Пишут все, кто во что горазд.
                                              • +1
                                                Автор, тогда уж отпишись, что раньше появилось: яйцо или курица. Холиварить, так по полной.
                                                А о «проблемах», уж не знаю, для кого это действительно проблема… Наверное для клавиатуры, снашивается всё-таки, можно было клацнуть один раз таб, а кликают 2 раза пробел. Двойная нагрузка как никак, баг ^^
                                                Вопрос читабельности — так это вообще ничего не решает. На собственном опыте, отступ в 1-8 никак не сказывается, пробел это или таб, не важно. Куда страшнее, когда в кривом коде идёт всё без отступов, сплошные черезстрочные пропуски и переменные в алфавитном порядке.
                                                Лично я ушёл с таба на пробел лет 5 назад, по мне так удобней, но как говорится, это дело личных предпочтений. Кстати, о том чтобы настраивать на каждой машине отдельно размер табуляции под свои предпочтения, что мешает:
                                                а) заменить пробелы на табы (решение в 5 сек в любом редакторе кода)
                                                б) клацнуть на выравнивание кода
                                                Имхо, это раздутый на пустом месте спор.
                                                • +3
                                                  >можно было клацнуть один раз таб, а кликают 2 раза пробел
                                                  в нормальных редакторах нажатие [Tab] вставляет нужное количество пробелов.
                                                  для удаления — либо backspace удаляет правильно, если это indent; либо Shift+Tab
                                                  • 0
                                                    Спасибо кэп, я в курсе.
                                                  • +3
                                                    Ах да, забыл:
                                                    1) Windows vs Linux
                                                    2) Apache vs Nginx
                                                    3) Firefox vs Opera
                                                    4) QIP vs Miranda IM
                                                    5) ICQ vs Jabber
                                                    6) iPod vs Cowon
                                                    7) Яйцо vs Курица
                                                    • +10
                                                      1. Windows для отдыха, Линукс для работы.
                                                      2. lighttpd
                                                      3. FF + Chrome
                                                      4. Skype
                                                      5. см. пункт 4
                                                      6. не слушаю музыку с портативных устройств, берегу уши
                                                      7. Выбираю глазунью и куриный биток

                                                      Мне так удобнее, любите запускать игры под вайном, ваше дело. Обожаете Оперу, ну что же, тоже нормальный браузер и т.д. А те кто с пеной у рта доказывают, что надо использовать только «это», просто не умеет выбирать сам.
                                                      • +3
                                                        Мне кажется, они просто не уверены в своём выборе и думают, что если докажут кому-то что, скажем Опера круче всех, то так оно и есть. И это прибавит им уверенности в их выборе :)
                                                        • –1
                                                          Скажем так, я к примеру знаю, что Opera круче всех :) Я уверен в своём выборе и поэтому её использую. И табы для отступов мне нравятся больше, чем пробелы. Всё дело в том, что никто не может/не вправе судить о таких вещах объективно.
                                                          • +2
                                                            И почему-то мне кажется, что вы не будете говорить, что Файрфокс/Сафари/Хром отстой — не так ли? Потому что вы знаете, что вам Опера подходит. А те, кто не уверен пытаются таким образом себя обмануть. Может, в психологии это даже как-то называется, потому что встречается повсеместно :)
                                                            • –2
                                                              Почему же? Если Вы спросите, я совершенно точно скажу, что всё, кроме оперы, отстой! :) Да и сам друзьям не редко об этом говорю.
                                                            • 0
                                                              А я не говорю что Opera круче всех, я просто её юзаю :)
                                                              Обычно не обращаю внимания на холивары какой браузер лучше, но меня удивляют товарищи, которые видя у меня например неработоспособность какого-то js, использующего фичи какого-то браузера, сразу констатируют «ну это же опера», при этом в аналогичной ситуации, но когда что-то не работает в «их» браузере, долго возмущаюся на код :)
                                                              Ну не знаю. Работаю в том браузере, который мне удобней и в которой по моим «сферам интересов» всё работает нормально, а других учить жить в этом отношении не лезу. Но и другими браузерами пользуюсь при необходимости. Какой смысл с пеной у рта доказывать что-то своё кому-то с противоположным мнением, если сам уверен в своём выборе и почти так же уверен, что оппоненту на твои аргументы покластьвсё равно, ему важднее тебя убедить в своём…
                                                              • –1
                                                                Каюсь, я иногда, в особо тяжких случаях, тоже использую Chrome или IE (что первое под руку подвернётся). Но в последнее время бывает это редко, примерно раз в четверть года.
                                                        • –15
                                                          Apache — веб-сервер; nginx — нет.
                                                          • +6
                                                            А что же такое nginx, простите?
                                                            • +3
                                                              Ну вот, холиварчик уже начался, прям классически :)
                                                              • +2
                                                                А я только хотел сказать «Понеслась» =)
                                                              • –3
                                                                Реверсивный прокси-сервер.

                                                                Можно даже процитириовать с сайта нжынкса:

                                                                — nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server.

                                                                Для интереса хотя бы посмотрели что это такое, на сайте очень развернутое описание. Если не умеете даже это гуглить, то вот, пользуйтесь → nginx.org/en/
                                                                • 0
                                                                  А буквы «HTTP» вы не заметили? ;)

                                                                  Если попытаться корректно перевести на русский язык (с сохранением смысла), то получится что-то вроде «nginx — это HTTP- и прокси-сервер».
                                                                  Т.е. он может работать и как HTTP server, и как reverse proxy server.
                                                                  • +1
                                                                    Окей, вспорол глупость.

                                                                    Но это не меньшая глупость, чем сравнивание nginx и Apache, я гарантирую.
                                                                    • +1
                                                                      В том списке полно и других глупых сравнений :)
                                                                      • 0
                                                                        Зря, nginx+phpfpm и apache+mod_php это не одно и то же. Есть плюсы и минусы у каждой комбинации, по оперативке первый выгоднее точно.
                                                                    • 0
                                                                      and знаете что в английском означает?
                                                                      nginx [engine x] is a HTTP… server — это в первую очередь.

                                                                      Реверсивный HTTP-прокси сервер из него не очень. HTTP 1.1 для бэкенда не поддерживает. Лучше уж какой-нибудь squid юзать.
                                                                • +1
                                                                  Сильно просто:
                                                                  1) MacOS X
                                                                  2) Nginx
                                                                  3) Safari/Chrome
                                                                  4) Miranda IM^W Skype
                                                                  5) Jabber
                                                                  6) iPod
                                                                  7) На завтрак глазунья, на ужин курочка.
                                                                  • +2
                                                                    >4) Miranda IM^W Skype

                                                                    Miranda Skype? ;)
                                                                    • –1
                                                                      7) На завтрак глазунья, на ужин курочка

                                                                      Мясоедство?! Kill him with fire!!1
                                                                    • 0
                                                                      1) Linux
                                                                      2) Apache+Nginx
                                                                      3) Chrome
                                                                      4) Qutim
                                                                      5) Skype
                                                                      6) Cowon
                                                                      7) Курица в маринаде :)

                                                                      Холиварный ответ получился только на 2 вопроса )
                                                                      • 0
                                                                        А у меня вообще компьютера нет. И курицу я не люблю.
                                                                  • +1
                                                                    В Питоне нужно четкое кол-во оступов…
                                                                    Редактирую массу исходников на разных языках,
                                                                    Это дело вкуса notepad ++ или gedit легко настраиваются…

                                                                    Вот кому тяжко после этой статьи — программистам на White Space
                                                                    en.wikipedia.org/wiki/Whitespace_%28programming_language%29
                                                                  • –3
                                                                    Постоянно ругаюсь с людьми, которые коммитят в репозиторий код с пробелами вместо табов. Хочется взять и расстрелять.
                                                                    • +12
                                                                      А вы попробуйте ввести стандарт, говорят помогает
                                                                    • +8
                                                                      Аналогично, но наоборот ) В питоне стандарты например рекомендуют использовать именно 4 пробела, а не табы.
                                                                      • –4
                                                                        Рекомендуют не значит принуждают. Есть еще здравый смысл. И он подсказывает принять другие стандарты, пускай и противоречащие PEP8 в данном вопросе.
                                                                        • +4
                                                                          Собственно Zen of Python:
                                                                          Special cases aren't special enough to break the rules.
                                                                          Although practicality beats purity.
                                                                        • +5
                                                                          Другое дело, что для проверки соответствия стилю кода у python есть модуль pep8 и большинство разработчиков подразумевают, что в сторонних модулях стиль выдержан в духе рекомендаций. Проблемы возникают как раз у таких вот «special case» разработчиков.
                                                                          • 0
                                                                            В опенсорсе логично придерживаться рекомендаций. В компании — совсем даже не обязательно, т. к. шанс стороннего разработчика — минимален, а свои должны знать правила.
                                                                            • 0
                                                                              Ну, как минимум новые люди будут приходить и плеваться. Ну и привычки — дело такое, что человек пойдёт в опенсорс и будет себя по рукам постоянно бить. Нет, все же не вижу весомых аргументов использовать табы.
                                                                              • +1
                                                                                Даже если стандарты рекомендуют табы?
                                                                                • +1
                                                                                  Спасибо, надо было написать «то, что стандарты прописали» а не «табы».
                                                                        • +1
                                                                          В питоне пусть сначала хотя бы стандартные библиотеки приведут к одному виду. Большая часть имеет идентификаторы с подчерком, но и сamelCase хватает несмотря на все зены и пепы. Сам работаю с питоном и не нравится сильно эта неоднородность.
                                                                          • 0
                                                                            хм, стандартные вроде в основном все ровные. camelCase как правило возникает в обертках сишных библиотек, но это понятно почему.
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                          • +3
                                                                            Проблема, разумеется, не в пробелах. Проблема в разработчиках, которые не следуют стилю, принятому в проекте.
                                                                        • +5
                                                                          Отличный ответ, поддерживаю.
                                                                          • +4
                                                                            Согласен с автором, я за табы (в 4 пробела)
                                                                            • +10
                                                                              а пост читали?
                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                            • +1
                                                                              Я обычно пишу с табами. Правда, когда пишу на Pascal/Delphi или там, где нельзя воспользоваться табуляцией (например, в полях ввода на сайтах типа codepad), то ставлю два пробела.
                                                                              • 0
                                                                                В целом — согласен, но по-моему есть еще вариант твердо прописать правила расстановки табов/пробелов в стандартах кодирования языка.

                                                                                Например, для PHP есть стандарт Zend/PEAR, где регламентируется ставить 4 пробела вместо табов для отступов — но хорошо, если его придерживается хотя бы 10% разработчиков. Поэтому я для PHP отступы предпочитаю делать табами.

                                                                                Другое дело — Ruby, где за стандарт принято делать отступы двумя пробелами (и, кстати, самого стандарта я не читал — но сразу это понял по исходникам множества библиотек). И код, который не следует этому правилу выглядит просто чужеродно — я даже подозреваю, что такие библиотеки использовать почти никто не будет. Или будут, но только после того, как переделают табы в пробелы :)

                                                                                P.S. Кстати, есть аналогичная статья от Дмитрия Котерова (широко известного в узких кругах PHP и JavaScript-гуру).
                                                                                • +1
                                                                                  Ну так для Си существует штук 10 стандартов, и во всех свои требования. Каждая крупная корпорация пытается навязать свой стиль. Взять даже код в стиле исходников Microsoft и сравнить его с кодом в стиле исходников Linux — разница на лицо. т.к. что это дела не стандарта, а их большого кол-ва
                                                                                  • +2
                                                                                    Так же, как и для PHP, собственно. Но это уже проблема самого языка — значит, не смогли/не захотели принять единый стандарт кодирования.

                                                                                    В Java, Python, и Ruby этой проблемы не существует — за игнорирование стандартов, как тут уже сказали, можно получить молотком по пальцам. :)
                                                                                    • –1
                                                                                      А причем тут JS? В нем также как и в других языках. Всё зависит от опыта(как показывает практика новички всё в одну строку пишут) и пристрастия к определенному оформлению. Если человек много пишет на к примеру на С/С++ с использованием определенного стиля оформления, то он и на JS будет использовать этот же стиль (т.е. ему это будет проще чем перестраиваться от языка к языку).
                                                                                      Ведь много людей, особенно на просторах бывшего ссср, в силу сложившихся обстоятельств занимаются одновременно разного вида работами и используют разные языки, и в таком случае использовать для каждого языка какой-то особенный стиль (рекомендуемый для данного языка) будет очень не удобно.
                                                                                      • 0
                                                                                        Так я говорил не про JS, а про Java :)
                                                                                        С JavaScript, увы, все не так радужно — возможно, есть стандарт кодирования ECMA, но если даже он есть — то его судя по всему мало кто придерживается.

                                                                                        в таком случае использовать для каждого языка какой-то особенный стиль (рекомендуемый для данного языка) будет очень не удобно.

                                                                                        Согласен, вполне возможно. Но лично я такой проблемы не вижу — пишу одновременно на Руби, Питоне, и PHP — и везде стараюсь соблюдать стандарты.
                                                                                    • 0
                                                                                      Юмор в том, что у того же Microsoft еще позиция относительно стандартов кодирования менялась диаметрально, насколько я помню, раза 3-4 уже…
                                                                                    • +1
                                                                                      Если напишите полезную библиотеку — будут и с табами использовать.
                                                                                    • +6
                                                                                      Из опыта, когда начинал только разработки свои, использовал пробелы… В итоге я проклял пробелы, в тот день когда узнал про табы.
                                                                                      • +5
                                                                                        Вы узнали, что делает ТА КНОПКА?
                                                                                        • 0
                                                                                          ТА КНОПКА вполне может вставлять N пробелов вместо символа табуляции, если IDE/редактор это умеют (а умеют это почти все) ;)
                                                                                      • –20
                                                                                        Я хочу писать код, блеать, а не думать о пробелах и табуляциях! А то тут всякие несознательные товарищи уже наганом размахивают, за случайно поставленную парочку пробелов.
                                                                                        • +11
                                                                                          Правильно размахиваем. Ибо из-за вашей случайной пары пробелов пидорасит форматирование и код выглядит так, что кровавые слёзы из глаз текут.
                                                                                          • –6
                                                                                            Меньше красок, мон шер. Иногда идет «поток мысли кода» и тут совсем не хочется думать о правильном оформлении оного. Нет, я не раздолбай и в таких случаях на 95% правильное форматирование все же осуществляю, а на допущенные пробелы можно и потом проверить.
                                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                                              • –5
                                                                                                Не будем обобщать
                                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                  • –3
                                                                                                    Вот как Вам объяснить, почему не будем? Потому что я пишу код очень давно, всякое было, делал разные выводы и, надеюсь, могу себя считать опытным программистом. И говоря о потоках мыслей я подразумевал адекватный поток мыслей, когда продуманы все детали, потому как для меня по-другому просто невозможно. И Ваш коммент, как следствие, довольно обиден.
                                                                                              • +6
                                                                                                Иногда идет «поток мысли кода» и тут совсем не хочется думать о правильном оформлении оного.

                                                                                                Тут та же проблема, что и с грамотностью — есть ведь такая отмазка как «торопился и не думал об ошибках». :) Но грамотные люди пишут грамотно всегда, вне зависимости от того, торопятся они или нет.
                                                                                                Тут то же самое — писать код нужно всегда правильно и по принятому в языке/компании/проекте стандарту.
                                                                                                • 0
                                                                                                  Заметьте, я не отмазываюсь, и пишу правильно всегда по мере своих сил, Вы вот, например, никогда не совершаете ошибок? Я же говорю о том, что ошибки — это естественно, но да, их надо исправлять. Только без этого фанатизма с кровавыми словами.
                                                                                                  • +2
                                                                                                    Согласен с вами — именно про это и говорю — ошибки надо стараться исправлять, без фанатизма. Но никак не в открытую на них забивать, да еще и гордиться этим (что уже является другой крайностью).

                                                                                                    Ну и я говорил не про вас, а про людей, которые руководствуются принципом «всеравно пешу быстра, пра стондарты и грамматнасть можна ващще не думать» (согласитесь, такое читать не особо приятно? :) Вот по-моему то же самое и с кодом).
                                                                                                • 0
                                                                                                  На этапе написания или отладки да можно отступить от красивого форматирования. Но написал блок — отладил — привел в порядок форматирование.
                                                                                                  • +2
                                                                                                    >Иногда идет «поток мысли кода» и тут совсем не хочется думать о правильном оформлении оного.

                                                                                                    А на хрена об этом думать? Выставил настройки редактора — и пусть код хлещет хоть потоком, хоть водопадом.
                                                                                                    • 0
                                                                                                      Спаси (ctrl+f) и сохрани (ctrl+s) нас от этого! :)
                                                                                                    • 0
                                                                                                      PHP_Beautifier привязаный к той системе контроля версий, которую вы используете должен улучшить ситуацию с Вашими глазами, ИМХО
                                                                                                    • +2
                                                                                                      Ура, какое единство мысли и общественное порицание! Что за люди, за выражение собственного мнения, насрать в карму, как будто это я тот злой человек, который пишет все в мире библиотеки с пробельными отступами.
                                                                                                      Этот топик — обычный холивар, где слепо кричат: «даешь табуляцую!» и лишь изредка слышаться возгласы, что это не универсальный совет, как бы вам того ни хотелось.
                                                                                                      Поверьте, я далеко не новичок в программировании, я занимаюсь этим делом уже 11 лет и могу показать примеры своего кода, там не то что вы, там комар носа не подточит. Я работаю в команде не первый год и понимаю, как это плохо делать что-то под себя не думая о других. Там может не будем хаять налево и направо?
                                                                                                      Возможно, мои фразы кажутся разлагающими для новичков, которые могут увидеть за ними призыв к расхлябанности, но я все же надеялся, что уровень хабра много выше и люди понимают, что надо относиться к подобным советам осторожно, но и не отрицать однозначно.
                                                                                                      • +2
                                                                                                        >Этот топик — обычный холивар, где слепо кричат: «даешь табуляцую!»

                                                                                                        Слепо? А по-моему автор всё разложил по полочкам, заранее ответив на любое возможное возражение. Вы сам топик-то читали, или только заголовок? ;)
                                                                                                        • 0
                                                                                                          Я не из тех кто комментит не прочитав. А автор может разложить хоть по ящичкам, Вы сами то комменты читали, где приводят иные аргументы?
                                                                                                          • +1
                                                                                                            Комментариев со «слепыми» выкриками полно с обеих сторон, поэтому не нужно акцентировать на криках «даёшь табы!» — среди сторонников другого лагеря их тоже достаточно.
                                                                                                            Однако позиция «отступы табами» в топике изложена достаточно аргументировано (в отличие от позиции «отступы пробелами» из предыдущего топика).
                                                                                                      • 0
                                                                                                        Если вы пишете код для себя, то хоть лесенкой форматируйте. Но если код будет читать кто-то другой, то он хочет код читать, блеать, а не выносить себе мозг, угадывая границы блоков.
                                                                                                      • –2
                                                                                                        Бывает кто для проекта приходится использовать код, который написан другими людьми с использованием пробелов. Тогда просто убивает то, что если начинаешь править код (в частности добавлять/удалять строки) т.к. замучаешься удалять кучу пробелом перед текстом (особенно большой вложенности).

                                                                                                        Сам пользуюсь табами, но бывают случае что только пробелы спасают. К примеру: код построен с использованием табов и его надо показать кому-нибудь через сервис в стиле pastebin, то код с вложенность 5 и выше ужа начинает уходить за рамки т.к. сервис использует табы размером 8 пробелов.
                                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                          • 0
                                                                                                            А причем тут текстовый редактор? Ели имеете в виду про правку кода, то кто его знает что использовал человек при написании кода, а для правки не всегда под рукой есть IDE или редакторы, бывает и notepad'ом приходится пользоваться. А если имеете в кривость редактора при копировании в pastebin, то код берется из Visual Studio или Code::Blocks, зависит от обстоятельств. Так что не наго писать херню.
                                                                                                            • 0
                                                                                                              ответ был о «замучаешься удалять кучу пробелом перед текстом». Каждый цивилизованный редактор позволяет сделать это за 2-3 клика/нажатия клавиш. Если у вас не так — или таки редактор — дурак, или вы недоразобрались в его использовании
                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                • 0
                                                                                                                  >Ели имеете в виду про правку кода, то кто его знает что использовал человек при написании кода

                                                                                                                  Очень многие редакторы умеют это:

                                                                                                            • 0
                                                                                                              Настройка размера табуляции есть не во всех редакторах, имею введу именно редакторы а не IDE
                                                                                                              • 0
                                                                                                                А если вы используете IDE, то во многих IDE есть возможность настройки табов с использованием пробелов, т.е. 1 таб = 4 пробелам
                                                                                                                • +3
                                                                                                                  в чем проблема пользоваться теми, где настройка есть?
                                                                                                                  • 0
                                                                                                                    Это в notepad чтоли?
                                                                                                                    • 0
                                                                                                                      Кому-то удобно пользоваться и notepad, vi или редактором в mc, команды программистов работающие над проектами бывают разные и вкусы у всех разные, да и не всегда есть возможность запустить IDE, для того что бы сделать какой либо hotfix.

                                                                                                                      К примеру gedit бывает странно отображает табы
                                                                                                                  • 0
                                                                                                                    А я за Кена Арнольда «Стиль есть содержание»
                                                                                                                    fktrc.livejournal.com/630.html
                                                                                                                    Не только в отношении пробелов/табов, но и в прочем.
                                                                                                                    • +10
                                                                                                                      Кажется я начинаю понимать, откуда такое моё несогласие с миром. Я в основном работал и работаю с унаследованным кодом. И мне совершенно не интересны теоретические и идеологические обоснования почему табы лучше. Я практик. Когда я беру код и вижу, что он разъехался, так по мне пробелы в 100 раз лучше. Никто никогда не заворачивается, что такое indentation, alignment. Просто 5-10 лет назад натабили и пошли дальше.
                                                                                                                      • +1
                                                                                                                        И Вас даже не подкупил тот факт, что на картинке в посте логотип PVS-Studio? :)
                                                                                                                        • +6
                                                                                                                          Кажется я начинаю понимать, откуда такое моё несогласие с миром.

                                                                                                                          Ваше несогласие с миром заключается в том, что «много слов — мало дела». Вот давайте посмотрим этот ваш комментарий. Никакого смысла, никаких аргументов, одни эмоции. Сначала выставили себя «борцом против мира», этакий герой.

                                                                                                                          И мне совершенно не интересны теоретические и идеологические обоснования почему табы лучше. Я практик.

                                                                                                                          Все мы практики. Но своим сообщением вы всех, кто использует табы обвинили в отсутсвии практики. Без веских оснований.

                                                                                                                          Когда я беру код и вижу, что он разъехался, так по мне пробелы в 100 раз лучше.

                                                                                                                          Опять же, никаких аргументов, можно заменить «пробелы» на «табы» и получится ровно тот же смысл:
                                                                                                                          Когда я беру код и вижу, что он разъехался, так по мне табы в 100 раз лучше.

                                                                                                                          Дело не в табах и не в пробелах, дело в профессионализме, отступы у новичка поедут что там что там.

                                                                                                                          Никто никогда не заворачивается, что такое indentation, alignment.

                                                                                                                          Аналогично. Пустой набор слов. Начнём с того, что он в корне неверен, так как ваше «Никто никогда» уже опровергает мой пример. Ну и даже если бы он был верен, то такое было бы применимо что к табам, что к пробелам.

                                                                                                                          Просто 5-10 лет назад натабили и пошли дальше.

                                                                                                                          Это вообще ни к селу ни к городу. «В огороде бузина, а в Киеве — дядька».

                                                                                                                          Просто у вас поток эмоций, мало информации и аргументов, потому многие люди вас не восприняли.
                                                                                                                          И еще — вы не поняли основную идею топика.
                                                                                                                        • +1
                                                                                                                          Начнём с того, что большинство людей (по крайней мере на Хабре) предпочитают табы.

                                                                                                                          средняя температура по больнице?
                                                                                                                          А еще дополнительно у пробелов есть такие недостатки, как невозможность быстрого перемещения стрелочками клавиатуры (щёлкает каждый пробел, а не через блок), возможность допустить ошибку (поставить в одном месте 3 пробела вместо 4, чем порушить дальнейшую структуру), увеличение размера файла и куча всего ещё.

                                                                                                                          Да ну? Вы какой IDE пользуетесь? У меня даже gedit с включенным умным отступом по пробелам в identation быстро переходит. Так же как и умеет если что кусок кода на n пробелов вправо-влево сдвинуть.
                                                                                                                          ИМХО вы привели единственный (впрочем, объективный) аргумент — возможность настроить отображение табуляции в любое кол-во пробелов. Только расписали в несколько параграфов разными словами.
                                                                                                                          Я лично вообще ни за то, ни за то. Когда пишу на PHP и C++ отбиваю табом. Когда пишу на Ruby, отбиваю пробелами. Зачем этот топик? Хабр недовыполняет недельную норму холиворов?
                                                                                                                          • –4
                                                                                                                            также поясню по поводу средней температуры по больнице: мне тот опрос по ссылке напоминает статью о статистике матов в комментариях к коммитам на гитхабе по языкам. На первом месте по количеству стоял Ruby, который занимает где-то половину всего гитхаба, потому и количество большое. По части того опроса: очевидно, что на хабре представители некоторых языков и технологий представлены в меньшем количестве, чем других (при чём часто не из-за статистически меньшего количества этих самых представителей, а из-за сепцифики технологий). В числе прочего, очевидно, что рубиистов (у которых в стандарте де-факто пробелы в отбивке) на хабре представлено меньше, чем любителей PHP, C++, whatever (где используют в основном табы). Потому и опрос этот мало о чём говорит.
                                                                                                                            • +2
                                                                                                                              Это статистическая выборка, 600 человек — вполне репрезентативно.
                                                                                                                              Она говорит, что людей, которые предпочитают табы на Хабре больше.
                                                                                                                              Какие этому причины — другой вопрос. Если появится язык, в котором отступы можно будет отбивать при помощи &nbsp; и все три его пользователя будут пользоваться именно этой возможностью, это не значит, что статистика — неверная.
                                                                                                                              • –3
                                                                                                                                ок. по вашей логике, C++ — самый лучший язык среди существующих, потому что на нём больше всех кодят?
                                                                                                                                • +2
                                                                                                                                  То есть по вашей логиге, С++ — самый худший язык среди существующих, потому что на нём больше всех кодят?
                                                                                                                                  Я просто не понимаю, зачем мне приписывать то, чего я не говорил. Я сказал, что «людей, которые предпочитают табы на Хабре больше». Где тут что-то про качество языка?
                                                                                                                                  • –2
                                                                                                                                    вы используете количество проголосовавших за табы как аргумент о том, что они лучше. отсюда я и сделал этот саркастичный вывод.
                                                                                                                                    • +2
                                                                                                                                      ДемагогияПодмена тезиса.
                                                                                                                                      Я не понимаю, зачем вы используете эти грязные приёмы ведения дискуссии, они вас не красят.

                                                                                                                                      вы используете количество проголосовавших за табы как аргумент о том, что они лучше

                                                                                                                                      Нет, я привожу результаты опроса с выводом о том, что большинство людей предпочитает табы. Я нигде не сказал, что это как-то влияет на их качество.
                                                                                                                                      • –2
                                                                                                                                        и кстати, грязные приёмы ведения дискуссии в данном случае у вас. на лицо и применение подмены тезиса (то, что вы явно не написали, что большинство за табы — аргумент, не значит, что это не читается в статье), так же как и обвинение в применении этих приёмов заранее, чтобы в этом не могли обвинить вас.
                                                                                                                                • –3
                                                                                                                                  если серьёзно, оспорьте моё следующее мнение: табы хороши тогда, когда код не выходит за пределы команды/компании. в этом случае просто можно договориться с коллегами о том, какого размера табы и т.п., если код выводится в open source (и тем более выкладывается в online-отображалки, к примеру гитхаб), пробелы в этом случае де-факто.
                                                                                                                                  а по части статистики, мне что-то подсказывает, что на хабре (да и в принципе) большая часть кода остаётся проприетарной. потому и табами большее кол-во человек пользуется. но это всё равно не аргумент за то, что табы чем-то принципиально лучше пробелов. как и наоборот.
                                                                                                                                  • +2
                                                                                                                                    Нет, табы хороши всегда, табы могут быть любого размера, почитайте топик-ответ.
                                                                                                                                    • –2
                                                                                                                                      я уже привёл свои аргументы против пропоганды табов выше, не получив на них ни одного ответа, только минусы. посему отступлю от этого спора, т.к. потерял надежду на вразумительный ответ. даже в этом вашем комментарии не было объяснения, почему моя точка зрения, по-вашему, неверна.
                                                                                                                                      • +2
                                                                                                                                        У вас в сообщении явно прослеживается, что если вы и читали топик, то невнимательно. В часности, следующее заявление указывает на это:
                                                                                                                                        просто можно договориться с коллегами о том, какого размера табы и т.п.

                                                                                                                                        Я писал об этом в топике и назовите мне хотя бы одну причину повторятся об этом в комментариях, если это уже написано в топике?
                                                                                                                            • +4
                                                                                                                              И только лисперы смотрят на холивар с непониманием. :) Код форматируется как дерево и табуляция фиксированной ширины не имеет никакого смысла.

                                                                                                                              По опыту с другими языками могу сказать что пробелы-табы — разницы никакой. Главное правильно настроить редактор и убедиться что в коде используются либо только пробелы либо только табы. Козёл может и в том и в другом огороде наследить.
                                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                • –2
                                                                                                                                  Ну слава богу. Вы понимающий. :)
                                                                                                                                  • +7
                                                                                                                                    А мне правктически всегда приходится равнять код за пробельщиками. Уровни вложения у них очень часто плывут. В HTML, например, это часто влечёт за собой лишние закрытые теги, или незакрытые.