понедельник, 14 мая 2012 г.

Никогда не используйте табуляцию… (Перевод)

Поскольку использование табуляции (код ASCII 9) обычно вызывает всякие проблемы с кодом, используйте хорошее правило:

1) Никогда не используйте табуляцию

1. 1) Единственное исключение: ваш код использует именно её для своих целей (единственный пример, приходящий мне на ум - Makefile)

Причины не использовать табуляцию

  • В зависимости от наследственности, разные редакторы по разному трактуют табуляцию. UNIXовые редакторы отображают табуляцию как 8 пробелов, а Windowsовые и различные IDE (Eclipse) – как 4.
  • Не всегда может быть достигнуто согласие по длине табуляции между различными текстовыми редакторами и различными людьми.
  • По этой причине использование табуляции может сделать исходный код нечитабельным и затруднить его сопровождение, если над ним работает более одного человека. Вы редактировали его в одном редакторе, ваш товарищ – в другом, и когда Вы снова его открываете – Вы видите мешанину текста с абстрактными отступами.
  • Ещё хуже дело обстоит с языками, которые строго относятся к пробелам (Python, CoffeeScript), так как такая неразбериха может привести к логическим или синтаксическим ошибкам.

И всех этих проблем Вы можете избежать если просто будете использовать вместо табуляций пробелы.

Даже если Вы единственный, кто редактирует код, Вы можете в какой-то момент поменять текстовый редактор и свернуть себе шею.

Использовать пробелы вместо табуляций не будет проблемой потому что…

  • Все текстовые редакторы могут  на лету преобразовывать табуляцию в пробелы при редактировании файлов. Если какой-то из распространённых редакторов (кроме блокнота) этого не делает – сообщите мне!
  • Обычно текстовые редакторы содержат настройки для длины табуляции и отступов. Вот последнее-то Вы и можете спокойно поменять.

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

  • Это сокращает размер файла – а Вас действительно беспокоят несколько байт  на вашем терабайтовом диске?
  • Да беспокоит, потому что мой файл скачивают из сети! – если Вас это и правда волнует, то в первую очередь оптимизацию размера надо делать в другом месте.
  • Мне они нравятся… – не обоснованоУлыбка
  • Люди не любят изменений

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

Рекомендации по оформлению кода

Текстовые редакторы

Если Вы автор текстового редактора, убедитесь что по умолчанию у него отключена табуляция, особенно для языков, чувствительных к отступам, если ваш редактор реагирует на языки

Обратите внимание, что этого поста бы не было бы, если бы

  • Все текстовые редакторы не использовали табуляцию по умолчанию 
  • Все текстовые редакторы трактовали бы табуляцию как 8 пробелов

Но кто-то когда-то решил сделать нашу жизнь чуть сложнее.

Источник

14 комментариев:

  1. Брехня какая то, если у меня настроено, что табуляция это 2 пробела, то в каком бы редакторе табуляию не поставили у меня она всегда будет в два пробела.

    ОтветитьУдалить
    Ответы
    1. так тут речь идёт о том, что в файле не должно быть табуляции - символа с кодом 9, а если у тебя автоматом заменяется табуляция на два пробела - понятно что проблемы не будет.
      Тут о другом: ты ставишь табуляцию, которая отображается как два пробела. Открываешь файл на другом компе, где она отображается как 4 пробела. Добавляешь строку таким же отступом, то есть с 4 пробелами. И в первом редакторе увидишь, что отступы будут разные.
      Надеюсь, этот поток сознания был понятен))

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

      Изменить отображение табуляции дела двух секунд.

      Удалить
    3. для тебя - да, а для него - нет. и для того чтобы сделать код ясным он его подправит под себя. Вот тогда-то ты и столкнёшься с проблемой. или если будешь редактировать на разных ОС

      Удалить
    4. Что за проблема в разных ОС?

      Хотел бы я посмотреть на человека который из принципа будет править все табы на пробелы.

      Да и чем отличается код с табом от кода с 4 пробелами?

      Удалить
    5. так об этом же написано - в windows \t=4 пробела а в UNIX 8. И править не надо - в нормальных редакторах это делается автоматом.
      Код не отличается, просто при совместном редактировании могут быть проблемы

      Удалить
  2. Табуляция стирается одним нажатием на backspace а чтобы стереть пробелы 2,4 или 8 раз надо нажать.

    ОтветитьУдалить
    Ответы
    1. тут я соглашусь - когда перешёл на пробелы сразу задолбался их стирать) но с другой стороны не возникает проблем при копировании в разные системы / сайты - а то иногда табуляция слишком сильный сдвиг даёт, что всё за границы уезжает, особенно в консоли

      Удалить
  3. Бред а не статья! Я ее даже не стал дочитывать.

    Итак, бред потому что, тот кто писал эту статью видно что новичок в этих делах.
    1) Чем больше пробелов тем больше вес страницы
    2) Без табуляции ужас будет творится в кодах. Читабельность сразу отпадает. Из-за трудной читабельности допускаются часто ошибки.

    А от этого бреда я чуть со стулу не свалился:

    Python рекомендует не использовать табуляцию
    PHP рекомендует не использовать табуляцию
    Java рекомендует не использовать табуляцию
    CSS рекомендует не использовать табуляцию

    Я как Java, PHP, JavaScript, HTML, SQL и CSS разработчик, ржу над такими словами. Так как на официальном сайте PHP, ссылочку сейчас не смогу предоставить, было рекомендация по использованию табуляций в коде по след. причинам:
    1) Для упрощения восприятия кода
    2) Для красоты написания кода
    3) Для более быстрой работы интерпритатора

    И еще читал на офф. сайте java, что Табуляция "Желательна к использованию" и там же приводились эти же аргументы и еще куча других аргументов

    На офф. сайте Мускула было тоже рекомендация по использованию табуляции.

    Так что удалите эту статью, и не за блуждайте народ!

    ОтветитьУдалить
    Ответы
    1. Ответ на ваши слова есть в тексте статьи.
      В ссылках (по крайней мере для PHP) написано "2 пробела, без табуляций". Так что кидайте ссылки, чтобы подтвердить свои слова.

      ЗЫ "заблуждайте", если уж так хочется. в одно слово

      Удалить
    2. В детстве очень рекомендовалось перекодировать русскую "р" в схожую по написанию английскую. Прям на каждой доске было написано.... Вспомнилось, после прочтения Вашей статьи, в которой _то,_что_автор_хочет_написать_ предлагается под каким-то очень жидким соусом, менять на _то,_что_похоже, но при этом будет отображаться в специфических условиях так, как этого хочет автор статьи и авторы специфического ПО.

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

      Удалить
  4. Здравствуйте! Прочитала про коды табуляций и.... Я теперь долго ищу КАК ИЗБАВИТЬСЯ от настырной табуляции. Некоторые страницы ворда я открываю, и там - ВСЁ нормально. Но некоторые страницы - решают сам, что им делать с табуляцией. Я не могу вставить нормальное фото, не могу напечатать текст, и НЕТ НИКАКОЙ ВОЗМОЖНОСТИ избавиться от этих самовольных хозяев страницы. Испробованы все советы. Мучаюсь до тех пор, пока очередная вордовская страница будет без фокусов табуляции. Все комментарии тут очень давних лет, и я, навряд ли получу комментарий о том, ТАК ЧТО, ВСЁ-ТАКИ, надо сделать, чтобы знаки табуляции не вели себя как хозяева. Даже избавиться от них - ПРОБЛЕМА,

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

      Удалить
  5. Здравствуйте! Я, конечно, полный профан в Интернете, так как познакомилась немного с Интернетом около 3-х лет тому назад. Вы стараетесь вордом не пользоваться, а я знаю только ворд и эксель. Что ли рассмотреть табличку как следует, там много чего написано, что открыть? Попробую.

    ОтветитьУдалить