singalen: (humpty-dumpty)
[personal profile] singalen
Вынесено из комментов.
Я принципиально использую пробелы, потому что:
1. Читатель НЕ настраивает софт, которым читает код. Поэтому код должен выглядеть единообразно в любой смотрелке.
2. Слова о том, что кто-то что-то "может настроить как ему нравится" - обычно buzz. Потому что а) история не знает сослагательного наклонения, б) большинство ничего не делает по этому поводу.
3. Код читают (и ещё всячески обрабатывают) в разных программах, в т.ч. таких, где нельзя настроить размер табуляции.
4. Табуляция, может, и была придумана для отступов в программах, но в те времена, когда имена переменных были много короче 8 символов. А значит, табами можно было форматировать текст в красивые колонки и он не вылезал за правый край терминала. Те времена давно прошли.

(no subject)

10/1/06 02:01 (UTC)
Posted by [identity profile] dottedmag.livejournal.com
5. Код не только читают, но и обрабатывают. Всякие инструменты тоже не умеют настраиваться: браузеры, diff'еры и прочее.

(no subject)

10/1/06 02:31 (UTC)
Posted by [identity profile] upstartn.livejournal.com
Безусловно, лучше использовать пробелы. Даже вступать в тот флейм не хотелось. Только дело тут не в принципах, разумеется, а просто в том, что это разумнее и удобнее.

(no subject)

10/1/06 03:08 (UTC)
Posted by [identity profile] kelyar.livejournal.com
по-моему тут вообще нечего обсуждать.
разве что способы реализации )

set expandtab
set tabstop=4

(no subject)

10/1/06 03:23 (UTC)
vitus_wagner: My photo 2005 (Default)
Posted by [personal profile] vitus_wagner
Не согласен.
1. Я знаю чем пользуются довольно многие из людей, которые полезут в мой код - 90% - либо vim, либо emacs.

2. Я точно знаю у значительного числа из этих людей табуляция настроена так, как им удобно.
Мнение о моем коде (имеется в виду opensource) тех людей, у которых редактор не настроен, меня, как правило, не интересует. Поскольку они не обладают первой из трех добродетелей программиста по Ларри Уоллу.

3. Утилитам, которые обрабатывают код, как правило пробелы/табуляции пофигу. whitespace оно и есть whitespace. (to [livejournal.com profile] dottedmag - а результаты diff-а надо тоже в любимом редакторе смотреть).

4. Те кто пишет код такой вложенности что при разумном размере табуляции (2-4 символа) оно не влазит на терминал 80x25 независимо от длины идентификаторов - неправы.

Re: Ну вот, holy war...

10/1/06 04:57 (UTC)
vitus_wagner: My photo 2005 (Default)
Posted by [personal profile] vitus_wagner
Я работаю и над проприетарными, и над открытыми проектами. Причем, что характерно, множество людей читающих мой код и в том, и в другом случае - сильно пересекается.

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

В итоге мы с коллегами посовещались и решили что у нас в конторе стандарт - табуляция.

Разговор о том, как правильнее писать имеет смысл только в контексте неопределенной аудитории, то есть в случае OpenSource.

Ограничение набора инструментов - в первую очередь самоограничение. В мире OpenSource тоже есть куча всяких IDE-образных поделок и code-browser-ов. Посмотрели, попробовали, выругались и выбросили. Понятно, что проприетарную софтину, за которую деньги плачены - выкидывать жальче. Но ведь обычно есть trial-версии.

Что такое "клиент email" я не совсем понимаю. Бывает e-mail внутри Emacs, бывают E-Mail клиенты, которые в качестве редактора вызывают vim, всё остальное просто неудобно в использовании.

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

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

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

Re: Ну вот, holy war...

22/1/06 08:51 (UTC)
Posted by [identity profile] sanyok-ua.livejournal.com
Что такое "клиент email" я не совсем понимаю.

Есть такой термин - MUA. Гугль расскажет.

Бывает e-mail внутри Emacs, бывают E-Mail клиенты, которые в качестве редактора вызывают vim, всё остальное просто неудобно в использовании.

Я вот как-то плохо представляю, как люди, не связанные с программированием (к примеру, product specialists) могут использовать mutt/pine/gnus etc.
Потому что для удобной работы их нужно очень долго настраивать под себя. Причём это итеративный процесс, в духе "попользовал пару дней - показалось странным нечто - перенастроил", то есть спихнуть эту работу на специального человека не получится.

Добавив сюда тот факт, что ни один из вышеназванных не поддерживает out-of-box генерацию HTML, в котором обычно идёт 90% корпоративной переписки (спорить по поводу того, что HTML в письмах нужен, совсем не хочется - это и так очевидно), а также отсутствие мало-мальского юзабилити - и оказывается, что пользовать их неэффективно не только в плане своего времени, но и в плане времени корреспондентов (меня вот просто бесит, когда очередной отвечающий отвечает на HTML-письмо в plain text, теряя все выделения цветом фрагментов кода, выделения жирным ключевых фраз etc. - ему плевать не только на своё, но и на моё время)

(no subject)

10/1/06 04:23 (UTC)
Posted by [identity profile] dottedmag.livejournal.com
Давно у нас появился переносимый между разными редакторами стандарт на перекрёстные ссылки в коде? Plain text хорош для редактирования, а не для навигации.

(no subject)

10/1/06 04:57 (UTC)
vitus_wagner: My photo 2005 (Default)
Posted by [personal profile] vitus_wagner
Давно. Doxygen называется.

Re: Reply to your comment...

10/1/06 04:59 (UTC)
Posted by [identity profile] dottedmag.livejournal.com
А ты его в w3m смотришь? А если не в w3m, то расскажи, где в твоём
браузере настраивается размер таба.

Re: Reply to your comment...

10/1/06 05:16 (UTC)
vitus_wagner: My photo 2005 (Default)
Posted by [personal profile] vitus_wagner
Так и быть, открою тебе эту страшную тайну

Re: Reply to your comment...

10/1/06 05:27 (UTC)
Posted by [identity profile] dottedmag.livejournal.com
Попался! Ты-таки настраиваешь другие инструменты, помимо редактора. И,
мало того, каждый, кто использует свой размер таба, тоже настраивает.

А теперь вопрос - зачем? ;)

Re: Reply to your comment...

10/1/06 05:31 (UTC)
vitus_wagner: My photo 2005 (Default)
Posted by [personal profile] vitus_wagner
Я настраиваю все программы, с которыми работаю (если они вообще умеют настраиваться).
Зачем? А чтобы работать было удобнее. Как правило, с помощью небольшого числа хорошо знакомых и настроенных инструментов можно добиться куда большей эффективности, чем с помощью большого числа инструментов, которыми сам не помнишь как пользоваться.

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

Re: Reply to your comment...

10/1/06 05:41 (UTC)
Posted by [identity profile] dottedmag.livejournal.com
Только не надо Unix-пропаганды, я её сам веду часто :)

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

ps: кстати, браузеры уже научились показывать в виде N+1
пробельного символа, а не N? А то те же diff'ы в них ужасно смотрятся.
(deleted comment)

(no subject)

10/1/06 14:37 (UTC)
Posted by [identity profile] bogdanv.livejournal.com
Я поддерживаю одного из предыдущих ораторов :) — спорить тут не о чем.
Символ табуляции — это всего лишь способ сэкономить на пробелах, а сейчас эта экономия уже не нужна. Слава богу, мы уже не ограничены цифрами 640, 80x25, 8.3, 33600 и т.п.

(no subject)

11/1/06 00:30 (UTC)
Posted by [identity profile] bogdanv.livejournal.com
"Символ табуляции — это всего лишь способ сэкономить на пробелах"

Следует читать как

"Использование символа табуляции для отступов в коде — это всего лишь способ сэкономить на пробелах"