|
Персональные инструменты |
|||
|
Why I love having tabs in source codeМатериал из CustisWiki
Многие делают отступы пробелами. Но в целом, это плохая идея. Если бы табы использовали для отступов, а пробелы — для остального форматирования, проблемы бы не было. По крайней мере современные редакторы, такие как VIM и KWrite, нормально обращаются с табами. Мои контраргументы к утверждениям статьи «Why I prefer no tabs in source code», агитирующей за пробелы:
На самом деле это более переносимо. Я не знаю никого, кто делает отступы пробелами, восемь раз нажимая на пробел, просто они обычно настраивают их текстовый редактор, что таб это восемь пробелов. И неважно, насколько «глубоки» и «широки» ваши табы, читатель просто настроит глубину табов как ему удобно, без необходимости переформатировать файл, ведь переформатирование файла (даже с одним отступом) делает сравнение полностью невозможным, ибо изменяется все! Табы решают эту проблему, можно интерпретировать их как 4-пробельные или 8-пробельные отступы, без изменения файла.
Это совершенная неправда, на самом деле, как я выше уже утверждал, отступы с табуляциями упрощают чтение diff-ов.
Автоматическое переформатирование ваших файлов с использованием sed или perl на самом деле гораздо легче, если используются табы, так как каждый уровень задается в точности одним символом, и не надо подсчитывать пробелы, пытаясь определить ширину таба — 8, 4 или сколько там еще пробелов. А редакторы, которые не справляются с табами, — это вовсе не редакторы, а недоразумение (вспоминается emacs).
Табы используются для отступов, для отступов и только для отступов. Они не предназначены для форматирования текста, для выравнивания колонок, или выстраивания ваших комментариев квадратиками. Пробелы предназначены для этого.
Во-первых, K&R-стиль давно устарел. Ничего страшного, если вы смените K&R-стиль на табы, где табы ровно X пробелов, и где каждый столбец будет на уровне кратном X. На самом деле, преимущество табов можно увидеть на примере CVS-репозитория kde. В основном код там допускает отступы пробелами и большая его часть непоследовательно содержит пробелы и табы вперемешку. И только малая часть модулей (aRts, Noatun) на 100% последовательна — та, где код форматируется табами. Лучше делать форматировать так (обозначим табы подчеркиваниями, а пробелы — точками): _____if.(true)....//This should be replaced _____{............//with a proper boolean __________func(); _____} На любом уровне, все будет выравнено: SomeClass::SomeClass() _____.:.InheritingClass(false, false _____...................5, 10, true, _____...................bleh, blah) { // .... };
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion». Репликация: База Знаний «Заказных Информ Систем» → «Why I love having tabs in source code» |
||