Комментарии 44
ура! меня показывают в прямом эфире!
Большинство иде имеют мегакнопку отформатировать код.
а где обоснование всех этих лучей поноса?
может я конечно непроходимо туп, но меня как то не напрягали никогда ни табы ни лишние пробелы
может я конечно непроходимо туп, но меня как то не напрягали никогда ни табы ни лишние пробелы
Future reading, две ссылки, по каждой можно первую статью в выдаче почитать.
Гуглить все умеют. Придётся попотеть и таки-объяснить свою позицию.
Правильные тим-лиды пусть тратят день, но таки-настраивают среду разработки на автоматическое форматирование перед сабмитом исходников — далее разработчики пишут код как угодно, а перед сабмитом всё приводится к единообразному виду. Тем самым, споры о том, как форматировать исходники, пресекаются на корню.
Чем хорош таб для меня — мне нравится отступ в два пробела, а коллеге в четыре, но мы оба используем табы и не спорим друг с другом. Чем плохи табы в этой ситуации?
Правильные тим-лиды пусть тратят день, но таки-настраивают среду разработки на автоматическое форматирование перед сабмитом исходников — далее разработчики пишут код как угодно, а перед сабмитом всё приводится к единообразному виду. Тем самым, споры о том, как форматировать исходники, пресекаются на корню.
Чем хорош таб для меня — мне нравится отступ в два пробела, а коллеге в четыре, но мы оба используем табы и не спорим друг с другом. Чем плохи табы в этой ситуации?
Автоформатирование зло! Особенно для больших проектов с контролем версий. Почему?
У каждого свои предпочтения — в том числе и по IDE. Заставить разные IDE форматировать одинаково практически не реально. В итоге любое малейшее изменение в коде (с последующей переформатировкой) может превратиться в головную боль при разборе с помощью контроля версий «что же все-таки было изменено?».
Касательно табов в начале — согласен и действительно не вижу с этим проблем. По-моему, большинство IDE уже научилось нормально с ними работать.
У каждого свои предпочтения — в том числе и по IDE. Заставить разные IDE форматировать одинаково практически не реально. В итоге любое малейшее изменение в коде (с последующей переформатировкой) может превратиться в головную боль при разборе с помощью контроля версий «что же все-таки было изменено?».
Касательно табов в начале — согласен и действительно не вижу с этим проблем. По-моему, большинство IDE уже научилось нормально с ними работать.
В чем проблема то?
Хороший редактор это не тот, который показывает хвостовые пробелы, а тот, который их удаляет автоматически при перезаписи файла и для которого во внутреннем представлении хвостовых пробелов не существует, как и табуляций.
Что касается табуляций, то существует единственная правильная их интерпретация — как выравнивание на следующую позицию, номер которой кратен восьми символам. Редактор вообще не должен интерпретировать или показывать табуляции во время работы. Он должен добавлять (или не добавлять) их автоматически при записи файла. Так как единственное их назначение – это сокращение объема файла при хранении.
Все вышедшие из дремучего прошлого unix-а форматы файлов, в которых символ табуляции является синтаксически значимым элементом по значению отличающимся от пробелов – сосут & must die!
Что касается табуляций, то существует единственная правильная их интерпретация — как выравнивание на следующую позицию, номер которой кратен восьми символам. Редактор вообще не должен интерпретировать или показывать табуляции во время работы. Он должен добавлять (или не добавлять) их автоматически при записи файла. Так как единственное их назначение – это сокращение объема файла при хранении.
Все вышедшие из дремучего прошлого unix-а форматы файлов, в которых символ табуляции является синтаксически значимым элементом по значению отличающимся от пробелов – сосут & must die!
Не везде табы недопустимы.
Про пробелы в конце строки согласен, но пробелы вместо табов в отступах — это нехорошо.
ну вот, опять.
в каждой команде свои правила
Пробел имеет фиксированную ширину, и два пробела бывает маловато, чтобы наглядно представить отступы. Ширина же табов в редакторе легко меняется.
Отбивать больше, чем двумя пробелами это уже жесть.
С notepad++ можно выделить блок и отбить его весь табом, при нажатии пробела он просто стирается, может в других редакторах по-другому.
В общем с табами легче работать — это моё аргументированное мнение.
Отбивать больше, чем двумя пробелами это уже жесть.
С notepad++ можно выделить блок и отбить его весь табом, при нажатии пробела он просто стирается, может в других редакторах по-другому.
В общем с табами легче работать — это моё аргументированное мнение.
Поддержу. Думаю, что табы имеют право на жизнь.
адски плюсую. в толковом редакторе/IDE размер табов можно подкрутить так чтобы было удобно читающему.
размер отступа в 4-ре пробела всегда остается 4-мя пробелами, в два — двумя. не айс. обычно молчаливо рассылаю лучи поноса авторам исходников использующим пробелы для форматирования.
размер отступа в 4-ре пробела всегда остается 4-мя пробелами, в два — двумя. не айс. обычно молчаливо рассылаю лучи поноса авторам исходников использующим пробелы для форматирования.
Использую только табы. Кто не поставил нормальный редактор и кодит в блокноте — виноват сам.
Основное достоинство табов — можно выставить такой размер отступа, какой мне нравится. Я люблю 4, а кто-то любит 8 — нахера мне потом эту лестницу разбирать?
Основное достоинство табов — можно выставить такой размер отступа, какой мне нравится. Я люблю 4, а кто-то любит 8 — нахера мне потом эту лестницу разбирать?
Если бы ширина табов не имела значения, никто не пытался бы никогда ее регламентировать.
такой код разъедется на 8 табах
@obj.some_method(:param1 => "ajklsdljksdlaksjdslkjas",
:param2 => 42,
:param3 => {
:foo => :bar
})
такой код разъедется на 8 табах
парсер лох, съел мои пробелы в коде. хотя, я думаю, мысль ясна…
Таб используется как уровень отступа. Дальнейшее выравнивание текста — только пробелами. В данном примере, конечно же никаких табов. А вот здесь:
Попробуйте выделить текст, чтобы понять где табы где пробелы. И ни что не разъедется при изменении ширины таба.
{ @obj.some_method(:param1 => "ajklsdljksdlaksjdslkjas", :param2 => 42, :param3 => { :foo => :bar }) }
Попробуйте выделить текст, чтобы понять где табы где пробелы. И ни что не разъедется при изменении ширины таба.
пользую вот такой pretxncommit хук в mercurial
#!/usr/bin/env python
from __future__ import with_statement
import sys, os
from mercurial import hg, ui
def get_changed_files():
repo = hg.repository(ui.ui(), '.')
def collect_files(changeset):
files = changeset.files()
for child in changeset.children():
files += collect_files(child)
return files
node = repo.changectx(os.environ['HG_NODE'])
return list(set(collect_files(node)))
indent_settings = (
('.html', 2),
('.css', 2),
('.js', 2),
('.py', 4),
)
if __name__ == '__main__':
auto_fix = len(sys.argv) == 2 and sys.argv[1] == '--fix'
fail = False
for file in get_changed_files():
for ext, tabwidth in indent_settings:
if file.endswith(ext):
break
else:
continue
with open(file) as fp:
data = fp.read()
if '\t' in data:
fail = True
if auto_fix:
print 'fixing %s' % file
with open(file, 'w') as fp:
fp.write(data.expandtabs(tabwidth))
else:
print 'tabs found in %s' % file
if fail:
sys.exit(1)
Холивар детектед
Вообще, вопросы выбора символа табуляции или набора пробелов для организаци отступа лучше смотреть в стандартах оформления кода соответствующего языка. Стандарты тоже не дураки писали.
Когда пишу на PHP использую только пробелы, потому что по стандартам PHP:
— Отступ для каждого нового уровня — 4 пробела.
— Используйте не табуляцию, а пробелы.
Обоснование:
— Когда люди используют разные значения табуляции, код бывает невозможно прочитать или распечатать, поэтому пробелы предпочтительнее;
Но это не значит что везде нужно лепить пробелы. Смотрите стандарты оформления для вашего языка программирования. Там, как правило, этот вопрос поднимается.
Когда пишу на PHP использую только пробелы, потому что по стандартам PHP:
— Отступ для каждого нового уровня — 4 пробела.
— Используйте не табуляцию, а пробелы.
Обоснование:
— Когда люди используют разные значения табуляции, код бывает невозможно прочитать или распечатать, поэтому пробелы предпочтительнее;
Но это не значит что везде нужно лепить пробелы. Смотрите стандарты оформления для вашего языка программирования. Там, как правило, этот вопрос поднимается.
НЛО прилетело и опубликовало эту надпись здесь
pear.php.net/manual/en/standards.indenting.php
«Use an indent of 4 spaces, with no tabs. This helps to avoid problems with diffs, patches, SVN history and annotations.»
Все основополагающие стандарты оформления кода: pear.php.net/manual/en/standards.php
Код на PHP может соответсвовать этим стандартам с незначительными отклонениями для некоторых проектов, но ключевые моменты стандарта должны соблюдаться. Так можно обратить внимание на стандарты написания кода для Drupal: drupal.org/coding-standards, где предлагается использовать не 4 пробела, в 2 вместо табуляции, но, вцелом, тоже «document is based on the PEAR Coding standards.»
«Use an indent of 4 spaces, with no tabs. This helps to avoid problems with diffs, patches, SVN history and annotations.»
Все основополагающие стандарты оформления кода: pear.php.net/manual/en/standards.php
Код на PHP может соответсвовать этим стандартам с незначительными отклонениями для некоторых проектов, но ключевые моменты стандарта должны соблюдаться. Так можно обратить внимание на стандарты написания кода для Drupal: drupal.org/coding-standards, где предлагается использовать не 4 пробела, в 2 вместо табуляции, но, вцелом, тоже «document is based on the PEAR Coding standards.»
У меня IDE стандартизирует табы и удаляет trailing whitespace. Удобно, один раз настроил — и спокоен.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
О трэйлинг вайтспейсах замолвите слово