Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс дек 17, 2017 9:02 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 98 сообщений ]  На страницу 1 2 3 4 57 След.
Автор Сообщение
 Заголовок сообщения: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 2:52 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
В исходных текстах ядра /kernel/trunk творится полнейший бардак в плане оформления. Иногда доходит до того, что в соседних строчках одного и того же файла используются разные отступы. Это затрудняет чтение кода, затрудняет написание кода и вообще производит впечатление откровенного разгильдяйства. Поэтому я ввожу единые правила оформления на уровне svn-репозитория - svn-сервер будет просто отклонять коммиты, выполнение которых означало бы появление в kernel/trunk файлов *.asm или *.inc, нарушающих оформление. Естественно, сервер будет выдавать пояснение со ссылкой на эту тему форума. Ограничения появятся через неделю, я думаю, что за неделю правила вполне можно обсудить.

Правила, естественно, должны быть машинно-проверяемыми. Всё вышесказанное обсуждению не подлежит. Сами правила можно обсуждать, для начала предлагаются следующие правила.
1. Символы табуляции запрещены. Основание: возможность и табуляции, и пробелов, - главная причина несущественных изменений на svn типа r2257, когда большинство изменений, показываемых svn, в действительности вызваны автоматическим переформатированием кода редактором. Требовать табуляцию вместо пробелов чревато тем, что код будет нормально смотреться только при строго определённой настройке просмотрщика.
2. Метки должны идти в отдельной строке от кода. Основание: при этом не нужно вводить разницу между длинными и короткими метками; при необходимости дописать код сразу после метки svn-изменения будут затрагивать только дописанные строчки, а не старый код.
Поправка от 28 мая 2013: метки могут быть в одной строке с данными.
3. Оформление команд. Строка начинается с восьми пробелов. Далее идёт имя мнемоники или макроса. Команды распознаются по известной мнемонике, список можно взять из фасма, или макросу stdcall/ccall/invoke/cinvoke. Если имя короче восьми символов, то оно дополняется пробелами до восьми символов; если нет, то далее идёт один пробел. Потом опционально идут аргументы, разделённые запятой с пробелом. Если это макрос и аргументов много или они длинные, то строка может заканчиваться - с точностью до пробелов и комментариев - символом \, после чего аргументы продолжаются на следующей строке с той же позиции, где они начались в первой строке. Основание, почему именно 8: в эту длину укладываются все часто используемые мнемоники и относительно частый макрос stdcall.
4. Префиксы lock/rep[z|e|nz|ne] к команде, если они есть, считаются логическим целым с последующей мнемоникой, отделённой одним пробелом, так что начинаются с позиции 8, где и обычные команды.
5. Все файлы с кодом должны обладать служебным свойством 'svn:eol-style' со значением 'native', чтобы svn автоматически ставил переводы строк так, как принято в ОС, где он запущен.
6. Все файлы с кодом и текстом должны быть в кодировке UTF-8 без BOM.

На прочие элементы - глобальные переменные, глобальные переменные в {i|u}global/endg, локальные переменные, члены структур, константы, объявления макросов и так далее - ограничений нет.



Active rules for all *.asm and *.inc files in kernel/trunk and all subdirectories:
1. No tab characters allowed.
2. Code labels must be on a separate line. It is not allowed to have a label and a command on the same line. Combinations of label and data in one line is allowed.
3. Lines with commands must start with 8 spaces. A mnemonic is short if it's length is less than 8. Arguments for short mnemonics must start in the column 16. Arguments for long mnemonics must be separated from the mnemonic by exactly one space. Arguments must be separated with a comma and exactly one space after a comma. Arguments continued in the next line must start from the same position as in the first line.
4. Prefixes lock/rep[z|e|nz|ne] are considered as a logical part of the command, so they start at position 8, then after exactly one space follows the main mnemonic and arguments.
5. The special property 'svn:eol-style' must be set to 'native'.
6. All code and text files should be in UTF-8 without BOM.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 2:56 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4227
Для меня нагляднее были бы примеры...

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 3:05 pm 
Замечательно! П.1 Я соблюдать не собираюсь - требование не использовать табуляцию это абсурд. Почему нельзя настроить табуляцию на границу 8 пробелов я откровенно не понимаю, но это царское решение походу обсуждению не подлежит.
Все остальные пункты меня не ущемляют, но если П.1 останется "AS IS", то я пожалуй пойду строить свой лунапарк.


Вернуться к началу
   
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 3:11 pm 
Не в сети

Зарегистрирован: Вт окт 05, 2010 6:05 pm
Сообщения: 179
Если сервер может проверять корректность оформления кода, то может ли он автоматом приводить некорректные к "правильному" оформлению? Т.е. взять эту функцию на себя.


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 3:13 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
Очень прошу не распространять нововведения на бранчи.
Хотя бы на один из них.
У себя я сам как-нибудь порядок наведу, без svn-роботов.


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 3:14 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
Mario, "Почему нельзя настроить табуляцию на границу 8 пробелов" - потому что это ущемляет тех, у кого табуляция настроена на 4 пробела.
"это царское решение походу обсуждению не подлежит." - всё, что после соответствующей фразы, подлежит обсуждению.
lev, нет. В svn коммит либо проходит "как есть", либо вообще не проходит. Вариант "пропускать неправильный коммит, но тут же нормализовывать от имени робота" не годится, поскольку не решает проблемы мусорных изменений.

Ещё раз: на репозиторий вне kernel/trunk правила не распространяются.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 3:20 pm 
Ога, присутствуют взаимпоисключающие параграфы: табуляция ущемляет права тех кто ей пользуется (они же идиоты и не знают как ее правильно настроить, потому и пользуются), потому мы отменяем табуляцию в принципе! Красота! Заставим всех пользоваться пробелами, а тех кто не согласен не пустим - синдром вахтера еще к тому же присутствует.


Вернуться к началу
   
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 4:31 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Запрет на табуляцию поддерживаю. lock должен идти с отступом 8 знаков как и обычные команды. Без отступа только метки. lock меткой не является.


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 5:16 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
А есть какие-нибудь редакторы, которые по enter делают 8 пробелов? Или по tab? (Кроме emacs/vim, в которых можно повесить хоткей или настроить вид документа)


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 6:12 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 25, 2009 4:45 pm
Сообщения: 788
Да, поскольку это касается в основном ядра, предлагаю вынести репозиторий ядра в отдельный реп.


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 6:30 pm 
Не в сети

Зарегистрирован: Ср дек 26, 2007 5:09 am
Сообщения: 214
Насчет табуляций CleverMouse абсолютно права: просмотр текста с табуляциями возможен только при правильной их настройке, что как минимум неудобно, ну а с пробелами отображение правильно всегда и везде. Lock, думаю, не должен отли чаться от других префиксов. Метки - имхо, отдельной строкой только "осмысленные" (например, имена подпрограмм), а "числовые" (мелкие циклы, условные операторы) - в одной строке с инструкцией.


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 6:37 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 751
А что если программист захочет внести изменения в файл в котором будет много другого ранее неотформатированного кода, тогда ему прийдется перед своей правкой форматировать полностью весь файл?
Думаю что подобные действия по форматированию должна выполнять какая нибудь программа наподобие ВебЛомастера.
Цитата:
"ВебЛомастер" - программа для преобразования HTML-файлов
к виду, удобному для их просмотра без подключения к Интернету

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


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 6:39 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 25, 2009 4:45 pm
Сообщения: 788
в git есть режим коммита, без включения whitespaces. Может и в svn такое есть?


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 6:49 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1601
Требование отступа для lock принимается.
SoUrcerer, вроде все сколько-нибудь приличные редакторы поддерживают автоотступ, при котором при нажатии Enter дублируют отступ, бывший в начале, и если там были пробелы, то и после Enter появятся пробелы. По tab, опять же, все сколько-нибудь приличные редакторы имеют настройку типа "конвертировать табы в пробелы" с указанием размера табуляции.
Кроме того, можно сконвертировать табуляцию в пробелы непосредственно перед коммитом; если этого не позволяет сделать основной редактор - что само по себе странно - то можно использовать expand -t8 < input > output, для винды expand есть здесь.
XVilka, это слишком радикально и непонятно, зачем нужно.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Правила оформления кода
СообщениеДобавлено: Пт окт 07, 2011 6:49 pm 
Не в сети

Зарегистрирован: Чт ноя 25, 2010 8:26 pm
Сообщения: 41
SoUrcerer писал(а):
А есть какие-нибудь редакторы, которые по enter делают 8 пробелов? Или по tab? (Кроме emacs/vim, в которых можно повесить хоткей или настроить вид документа)

Да. Например Geany (по tab). Поддерживает автозамену табуляций пробелами, можно выставить размер отступа, может автоматически удалять пустые символы в конце строк. В целом довольно прост чтобы называться IDE.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 98 сообщений ]  На страницу 1 2 3 4 57 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB