[Devel] Кодинг-стайл для Python
Evgeny Sinelnikov
sin на etersoft.ru
Ср Сен 29 17:46:30 MSD 2010
29 сентября 2010 г. 17:34 пользователь Devaev Maxim
<mdevaev на etersoft.ru> написал:
> On Wed, 29 Sep 2010 17:12:50 +0400, Evgeny Sinelnikov <sin на etersoft.ru>
> wrote:
>> Пример проблемы, которые я вижу с табами с ходу:
>> - скопировал исходник с jabber - могут возникнуть проблемы.
>> - запустил на редаторе, который заполняет проблеми - проблема. А
>> поскольку это стиль, по умолчанию, в большинстве редакторов так и
>> будет. И придётся нам всё время это дело перенастраивать.
>> - скопировал чужой код - проблема
> Чужой код в любом случае приходится переписывать, чтобы подставить, как
> минимум, свои переменные. Почему тогда не использовать табы? Большинство
> редакторов заполняют отступы теми символами, которые были ранее
> использованы в документе, поэтому не виу особой проблемы в этом случае.
> Jabber, кстати, сохраняет табуляцию. Возможно отображение пробелами -
> особенность psi.
>
>> Ну, к чему это упёртость? Да, есть проблема с разным отображением -
>> кому-то нравится 3 пробела на таб, а кому-то - 6. Но это не повод,
>> чтобы вносить это в стиль кодирования.
> Это, как раз таки и повод. Потому что если существует специальный символ
> для создания отступов, который каждый (!) может настроить по своему
> усмотрению так, чтобы было удобнее читать и писать, то нужно использовать
> его, а не правило, которое было введено исходя из древних редакторов на
> момент первого релиза. Кодинг-стайл в первую очередь существует для того,
> чтобы обеспечить:
> 1) Единообразность кода;
Единообразность кода по отношению к чему? По отношению к трём-шести
проектам, которые будут у нас или по отношению тысячам других?
> 2) Удобство написания и восприятия.
Это субъектвное качество. Между решением объективным проблем и
предоставлением субъективных удобств, мы выбираем первое.
> Исходя из этих целей мы получаем использование однотипных синтаксических
> конструкций (чтобы каждый раз не изобратать велосипед), переменные,
> выполняющие одну и ту же роль, которые в тысяче файлов имеют одинаковое
> имя. И, что самое главное, _удобство_ написания и чтения. При копипасте
> можно исправить несколько пробелов табами, можно даже сделать
> :%s/\s\{4}/\t/g , чтобы не менять код вручную. Но уподобляться перлу и
> писать код write-only для тех, кому неудобно читать пробелы, имхо,
> неправильно.
>
> Заметь, я не предлагаю переделывать все существующие проекты на табы. Я
> даже не спорю с пробелами. Мои слова сводятся к такому порядку:
> 1) Если мы разрабатываем чей-то проект, то используем его кодинг-стайл.
> Например, вайн. Естественно, там нужно использовать пробелы, поскольку они
> приняты в мейнстриме.
Да.
> 2) При создании нового проекта использование пробелов или табов
> определяется первым коммитером и главным разработчиком, остальные
> подстраиваются под него.
Да, но, по умолчанию, политика компании указывает использовать
общепринятые стандарты. И не нужно путать окружающих выбором в пользу
субъективных удоств.
>
>> В этом даже проблема видется мне, когда у разных людей с разными
>> настройками числа пробелов на таб код видется по-разному, поскольку и
>> восприниматься он тоже будет по-разному.
> Тогда почему не использовать удобный и правильный способ, а пользоваться
> тем, который предлагается фактическим стандартом, созданным двадцать лет
> назад?
>
Потому, что так сложилось. Потому, что так проще. Потому, что табы -
это не "удобный и правильный способ". Единственное зачем они нужны,
это чтобы ты мог поставить себе шесть пробелов на отступ, игнорируя
все потенциальные проблемы с переносом кода, а также необходимостью
перенастраивать стандартные настройки редактора для правки кода в
общепринятом виде.
Ещё раз. Преимущества возможности поставить шесть пробелов на отступ,
вместо четырёх, менее приоритетный вариант, чем:
- потенциальные проблемы с переносом кода;
- необходимостью перенастраивать стандартные настройки редактора.
А также необходимостью рассказывать всем, что все общепринятые
стандарты "не удобные и не правильные". У нас и так хватает
маргинальных проблем. Изьбавьте меня от этой, пожалуйста.
--
Sin (Sinelnikov Evgeny)
Подробная информация о списке рассылки Devel