Поддержание максимальной длины линии при использовании вкладок вместо пространств?

Руководства по стилям для разных языков рекомендуют максимальный диапазон длины строки 80-100 символов для удобства чтения и понимания.

Мой вопрос: как люди, использующие вкладки для отступов, соответствуют ограничениям длины строки? Поскольку, если длина вкладки равна 2 в вашем редакторе, то один и тот же код может быть более длиной 80 символов в другом редакторе с длиной вкладок, установленной на 3/4/6/8.

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

Итак, как вы (если в своем коде используете только вкладки)?

Ответ 1

Почти все языки имеют соглашение для размера вкладок. В большинстве проектов есть соглашение о размере вкладок, которое обычно (хотя и не всегда) совпадает с размером языковых вкладок.
Например, Ruby - 2, Python и PHP - 4, C - 8 и т.д.

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

Вы можете сравнить его с большинством веб-сайтов; они предназначены для 100% уровня масштабирования. Масштабирование или изменение размера шрифта почти всегда работает, но некоторые незначительные вещи могут сломаться. Его практически невозможно проектировать для всех возможных уровней масштабирования и размера шрифта, поэтому артефакты принимаются.

Если вы хотите убедиться, что код соответствует как длине строки, так и размеру вкладок, вы, вероятно, должны использовать пробелы, а не "реальные" вкладки. Лично я считаю, что эти рекомендации в точности таковы: руководящие принципы; и не строгие правила, поэтому я не думаю, что это так важно. Однако мнение других людей отличается от этого вопроса.

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

Ответ 2

Вероятно, вы часто не пишете очень длинные строки, поэтому вам, вероятно, не придется слишком часто переформатировать код.

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

Здесь тривиально простой Python script, который берет файл на stdin и сообщает вам, какие строки превышают 80 символов:

TABSIZE = 8
MAXLENGTH = 80
for i, line in enumerate(sys.stdin):
    if len(line.rstrip('\n').replace('\t', ' '*TABSIZE)) > MAXLENGTH:
        print "%d: line exceeds %d characters" % (i+1, MAXLENGTH)

Вы можете распространять это по-разному: иметь ли файл filename/и автоматически сканировать все в нем, настраивать размер или длину вкладки и т.д.

Ответ 3

Некоторые редакторы могут быть настроены так, чтобы вставлять количество пробелов, равное вашей длине табуляции, а не фактическую вкладку (по умолчанию эта функция включена в Visual Studio). Это позволяет использовать клавишу табуляции для отступов во время написания кода, но также гарантирует, что код будет выглядеть одинаково, если кто-то другой его прочитает, независимо от того, какова может быть их длина вкладок.

Все становится немного сложнее, если читателю также необходимо отредактировать код, как это происходит практически во всей команде разработчиков. Команды обычно имеют вкладки против пробелов и длины вкладок как часть их стандарта кодирования. Каждый разработчик несет ответственность за то, чтобы сделать свои собственные коммиты в соответствии со стандартом, как правило, путем настройки своей среды, чтобы сделать это автоматически. Изменения, которые не соответствуют стандарту, могут быть отменены, и разработчик исправил их до того, как они будут интегрированы.

Ответ 4

Если у вас будут правила стиля, которым каждый должен следовать, то один из способов гарантировать, что весь код соответствует максимальному ширине столбца 100, заключается в использовании форматирования кода, например Clang Format при регистрации, например, они включают option, чтобы установить ColumnLimit:

Предел столбца.

Предел столбца 0 означает, что предела столбца нет. В этом случае clang-format будет уважать решения, связанные с вводом строк в пределах заявлений, если они не противоречат другим правилам.

Как только ваша команда согласна с настройками, никто не должен думать об этих деталях при оформлении кода регистрации, будет автоматически выполнен. Это требует некоторой компромиссы, но однажды вы перестаете думать о довольно быстро, и вы просто беспокоитесь о своем коде, а не о форматировании.

Ответ 5

Если вы хотите убедиться, что вы не превысили лимит, установленный в стандарте кодирования команды/проекта, то было бы неразумно не иметь стандарт команды/проекта для ширины табуляции. Современные редакторы позволяют вам устанавливать ширину вкладки, поэтому, если ваша команда решит, и каждый установит свой редактор на эту ширину вкладки, все будут на одной странице.

Подумайте, если для вас строка длиной 100 символов, и кто-то приходит и говорит об этом, потому что их редактор имеет значение 8, а ваш - 2. Вы можете сказать им, что они имеют неправильную ширину вкладки и делают такую же правильную точку, как и они. может, если они скажут вам, что ширина вашей вкладки была неправильной, если не было согласованного стандарта. Если нет, то парень с 8-ю шириной будет неправ, когда он пишет строку из 100 символов, а другой разработчик, предпочитающий вкладки с 10-ю ширинами, жалуется.

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

Тем не менее, показано, что пробелы связаны с более высоким доходом, так что, знаете...;)