Отступы с пробелами, вкладками и количеством пробелов или ширины табуляции

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

Но я хотел бы услышать причины различных людей по этим вопросам:

  • Используете ли вы пробелы или вкладки? Вкладки с пробелами? Любая разница с "Вставить пространство вставки" вместо прямого пробела?
  • Сколько пробелов для каждой строки кода? Почему?
  • Отличается ли другой код другим стилем, который более подходит для каждого из них?

Есть ли способ "визуально" отступать код без фактического написания отступа? Значит, это не испортит оригинальный отступ? Это кажется маловероятным.

Я использую Xcode, поэтому лучше, если у вас есть советы для проектов Xcode.

Ответы

Ответ 1

Вы всегда должны использовать стиль кодирования, который уже используется проектом, если вы модифицируете существующий проект.

Если вам удастся выбрать свой собственный стиль кодирования для нового проекта, я предлагаю вам использовать вкладки для отступа, а не пробелы, вот почему. Используя пробелы, вы вынуждаете всех других разработчиков, работающих над проектом, соответствовать предпочтению отступов, будь то 2 пробела или 4 или 8 (или что-то еще). Но с помощью вкладок каждый разработчик может просматривать код, используя свои собственные предпочтения. Вы должны использовать пробелы, а не вкладки для форматирования текста (для выравнивания имен переменных по одной в строке или для выстраивания многострочных комментариев), поскольку это будет работать с любым предпочтением ширины табуляции. Однако, когда вы используете код отступа, используйте вкладки, а не пробелы. Короче говоря, отступ с вкладками, поскольку отступы с пробелами являются грубыми.

Ответ 2

  • потому что они отображают то же самое везде
  • indent-width зависит от контекста. беглый отступ плохо. в общем, языки, где вы не можете легко reset отступы до нормальных уровней через именованные абстракции (функции или методы) нуждаются в узком отступе.
  • да, см. предыдущую марку

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

typedef __LA_SSIZE_T archive_write_callback(struct archive *,
                                            void *_client_data,
                                            const void *_buffer,
                                            size_t _length);

если это было сделано с шириной табуляции 2, это будет выглядеть так: tabwidth = 4:

typedef __LA_SSIZE_T archive_write_callback(struct archive *,
                                                                                        void *_client_data,
                                                                                        const void *_buffer,
                                                                                        size_t _length);

наоборот, если он был создан с помощью tabwidth = 8 и отображен с помощью tabwidth = 4, результатом будет

typedef __LA_SSIZE_T archive_write_callback(struct archive *,
                        void *_client_data,
                        const void *_buffer,
                        size_t _length);

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

(другой ответ содержит тот же аргумент.)

Долгосрочное редактирование:

i полностью согласен с вступительным предложением принятого ответа, который

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

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

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

anecdote: я однажды работал над проектом, который претерпел изменения строк, от \r\n до \n, и оказалось, что это была боль в заднице в любое время, когда нам нужно было пройти ревизию в svn blame. s/newlines/indentation/, и у вас есть хороший аргумент против массивных изменений отступа в запущенном проекте.

Ответ 3

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

Например:

    result = variable_one + variable_two + variable_three +
             variable_four;

Если вы используете вкладки, как обеспечить, чтобы переменная "variable_four" была выровнена, если изменения отступки табуляции?

Ответ 4

Существуют разные языки программирования с очень различным синтаксисом. Синтаксис имеет решающее значение при выборе стиля кодирования. Особенно размер закладок (количество пробелов), который вы выберете, будет зависеть от того, сколько уровней вам нужно иметь. В HTML, например, существует много уровней, и нет смысла иметь большой размер вкладок, даже не имеет смысла использовать вкладки.. вы просто используете пробелы. Другим очень важным аспектом является IDE, которую вы используете. В некоторых IDE вам рекомендуется использовать вкладки (в Visual Studio у вас есть хорошая возможность добавлять/удалять вкладки в несколько строк (TAB для добавления, SHIFT + TAB для удаления) и т.д. Проекты имеют разные размеры отступа, потому что люди используют разные настройки отступа (даже в том же коде) или потому, что используют разные редакторы или потому, что проект включает код из других проектов или даже просто потому, что у людей разные предпочтения или даже мониторы разного размера. Я работаю в Visual Studio С++ и VB.NET, отступ - это вкладка (3 строки), а вкладки не вставляют пробелы.

Ответ 5

  • Я просто использую настройки по умолчанию для редактора, в котором я сейчас работаю, но если у меня есть выбор, я использую вкладки, потому что это означает, что для управления не нужны невидимые персонажи. У меня есть один редактор, который полностью управляет отступом для меня (REALbasic), другим редактором, который управляет отступом для меня, позволяет использовать пробелы в качестве префикса, но форматирование становится неустойчивым, если я оставлю их в (Applescript), а там Xcode.

  • Я вижу 4 пробела больше, чем другое число для пространственного отступа, поэтому я иду с этим, если мне нужно.

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

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

Ответ 6

В зависимости от вашей среды IDE и опций "вставки вкладок", это хороший ярлык с использованием пробела. То есть на 3 уровнях отступов с 3 пробелами на вкладку вы нажимаете клавишу Tab 3 раза вместо пробела 9 раз. Сетевой эффект тот же - вы вставили 9 пробелов - но с 1/3 количество нажатий клавиш.

Ответ 7

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

Ответ 8

Поскольку я предпочитаю пропорциональные шрифты с определенным размером 15pt, я устанавливаю TAB как 37 пикселей.

Я не возражаю против того, что вы используете ЧЕТЫРЕ ПРОСТРАНСТВА, если вы также используете шрифт, где SPACE - 37/4 пикселей в ширину. Или TWO SPACES, если вы также используете шрифт, где SPACE - 37/2 пикселей. Или даже три пространства, если вы также используете шрифт, где SPACE - 37/3 пикселей.

В противном случае TAB отлично работает для нас.