Подтвердить что ты не робот

Является ли символ TAB неправильным в исходном коде?

Я довольно хорошо знаком с двумя стандартами кодирования Zend и PEAR PHP, и из моих предыдущих двух работодателей в базе кода не было допустимо символов TAB, утверждая, что это может быть неверно истолковано конструкцией script или чем-то (что-то я точно не помню точной причины). Мы все создали нашу среду IDE, чтобы взорвать TAB до 4 пробелов.

Я очень привык к этому, но теперь мой новый работодатель настаивает на использовании TAB, а не пробелов для отступов. Полагаю, мне все равно, так как я могу просто сказать, что PHP Storm просто использует TAB char, когда я нажимаю клавишу Tab, но я это делаю. Я хочу пробелы, и мне нужен правильный аргумент, почему пробелы лучше, чем TAB.

Итак, личные предпочтения в стороне, мой вопрос: есть ли законная причина, чтобы избежать использования TAB в нашей базе кода?

Помните, что этот стандарт кодирования применяется к PHP и JavaScript.

4b9b3361

Ответ 1

Есть ли законная причина, чтобы избежать использования TAB в нашей базе кода?

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

Предпочтительный? Конечно.

Законно, как в соответствии с установленными правилами, принципами или стандартами? Нет.

Изменить

Все, что я действительно хочу знать, это если нет ничего плохого в TAB, почему будут ли оба Zend и PEAR сказать, что они не разрешены?

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

Ответ 2

Вкладки лучше

  • Clearer для чтения, на каком уровне находится каждый фрагмент кода; пробелы могут быть неоднозначными, особенно если неясно, используете ли вы 2-пространственные вкладки или вкладки 4-пространства
  • Концептуально имеет смысл. Когда вы отступаете, вы ожидаете вкладку, а не пробелы. Документ должен представлять, что вы делали на клавиатуре, а не в документе.
  • Вкладки нельзя путать с пробелами в расширенных строках кода. Особенно, когда слово warp включено, может быть место в завернутой серии слов. Возможно, это смущает читателей. Это замедлит спаренное программирование.
  • Вкладки - это специальный символ. Когда просмотр специальных символов включен в вашей среде IDE, уровни могут быть более легко идентифицированы.

Примечание для всех кодеров: вы можете легко переключаться между вкладками и пробелами с помощью любого редактора JetBrains (например, PHPStorm, RubyIDE, ReSharper, IntelliJIDEA и т.д.), просто нажимая CTRL + ALT + L на Windows, Mac или Linux.

Ответ 3

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

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

Ответ 4

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

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

В конце концов, tabs-vs-spaces не должны быть сделкой с торгов. Единственный раз, когда я думаю, что люди утверждают, что одна из альтернатив строго лучше, а другая - в чувствительных к отступам языках, таких как Python или Haskell. На этих смесях вкладки и пробелы могут изменить семантику программы в трудных для понимания способах, а не только сделать исходный код странным.

Ответ 5

С момента моего первого класса CS вкладки всегда были табу. Причина в том, что вкладки в основном похожи на переменные. Различные IDE могут определять TAB как другое количество пробелов. Говоря с точки зрения Visual Studio/NetBeans/DevС++, у всех есть возможность изменить "определение" TAB на основе количества желаемых пространств. Поэтому, если у вас есть 4 пробела, вы не можете узнать, может ли моя IDE указать 3 пробела или 5 пробелов. Поэтому, если кто-то использует стиль отступов на основе пространства, а кто-то использует TABS, форматирование может получить все. Однако в качестве контр-точки, если "стандарт" всегда использует вкладки, то это действительно не имеет значения, поскольку форматирование будет выглядеть одинаково - независимо от количества определенных пробелов. Но все, что требуется, - это один человек, который использует пространство, и форматирование может выглядеть ужасно и действительно запутывать. Этого не может быть при использовании пробелов. Кроме того, что произойдет, если вы не хотите использовать один и тот же интервал между функциями/методами и т.д.? Что делать, если вам нравится использовать 4 пробела в некоторых случаях и только 2 в других случаях?

Ответ 6

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