Page 1 of 2

Стандарт написания кода

Posted: Thu Apr 05, 2007 10:28 am
by zhenya_k
Я думаю уже созрела необходимость введения такого стандарта.
Как правильно заметил товарищ Ленин по ссылке http://meos.sysbin.com/viewtopic.php?p=10884
Есть ведь гайдлайны (руководства) по написанию кода на разных языках. Существуют они как раз для повышения сопровождаемости кода.
Колибри - это открытый проект, соответственно разные люди могут писать код для неё. Написанному коду нужно сопровождение (исправление ошибок или добавление новых возможностей) людьми, не писавшими этот код. Отсутствие такого стандарта приводит к появлению самого разношёрстного кода, в котором может разобраться только сам автор и то, если пройдёт немного времени. А по прошествии какого-то времени при возникновении ошибок появляются мысли о том, что гораздо легче написать заново, чем разобраться и модифицировать существующее. Такими образом можно постоянно на одном месте топтаться.

Я предлагаю разработать такой стандарт для проекта Колибри.
Если народ за, то я в скором времени могу предоставить черновой вариант.

Приведу несколько ссылок по теме
http://www.textrush.com/download/asm-co ... d-hyde.pdf
http://www.pherber.com/work/stds/asmstd.html
http://www.ee.ryerson.ca/~kclowes/stand ... index.html

Posted: Thu Apr 05, 2007 10:54 am
by Mario79
Я против насильного внедрения стандартов. Дело должно быть сугубо добровольным, так как в противном случае получится обратный результат - люди не захотят вообще писать. Проект ведь не коммерческий и навязывание подобных стандартов неприемлемо.

Posted: Thu Apr 05, 2007 11:03 am
by k@sTIg@r
Это конечно хорошо. Попробуй, лишним не будет.
Но насильно никого не заставишь, все равно, в итоге, большинство будет писать по-своему. Сложно переучится...по себе знаю...

Mario79
Не, что люди не захотят писать вообще - это вряд ли. Просто добрая часть забьет на эти стандарты и все.

Posted: Thu Apr 05, 2007 11:31 am
by <Lrz>
Попробуй, напиши. Уж лучше пусть будет один чем каждый будет придумывать для себя велосипед.

Posted: Thu Apr 05, 2007 11:50 am
by zhenya_k
люди не захотят вообще писать
Насколько я понял люди пока особо и не хотят писать.
Я думаю невозможно описать такой стандарт, как обязательный, код бывает разный, он может иметь только рекомендательное значение.
Просто будет появляться код более понятный (читабельный), либо нет.
Я конечно понимаю, что заставить кого-либо изменить себя - это большая проблема. Но ничего невозможного нет. Тем более, что некоторые даже не хотят посмотреть, а что же измениться в стиле написания. Может у некоторых код уже читабелен, и ничего менять не надо.
А будет стандарт (рекомендации, можно и так назвать), люди по-тихоньку будут осваиваться и следовать.

А насчёт коммерческий/некоммерческий, при чём тут это?
Читабельный код в первую очередь влияет на скорость развития проекта, а не на повышение цены конечного продукта.

Posted: Thu Apr 05, 2007 12:13 pm
by Mario79
zhenya_k
В коммерческом проекте от людей можно требовать соблюдения жестких стандартов в свободном нельзя. Какое же это хобби, если тебе еще и указывают, как ты должен работать.

Posted: Thu Apr 05, 2007 12:40 pm
by k@sTIg@r
Может у некоторых код уже читабелен, и ничего менять не надо.
"Что русскому хорошо, то немцу смерть"
для меня мой код читабельный, но я уверен что найдется не один человек, который посмотрит и скажет "Боже мой, что это такое"...
Стандарты - это хорошо, хорошо когда они описаны. Но к сажелению не все придерживаются стандартов. Хороший пример браузеры(WEB-разработчики и WEB-дизайнеры меня поймут). Большинство найдет что-то свое, что ему ближе.

Вобщем ИМХО, это не будет лишним и даже будет полезным (но, к сожалению, не в той мере в какой бы хотелось).

Posted: Thu Apr 05, 2007 1:10 pm
by Serge
Стандарт нужен даже на уровне форматирования текста. Я всегда делаю отступ на 12 знаков и не пользуюсь табуляцией. Некоторые выравнивают на 9. другие вставляют табы. Метки у одних с нулевым отступом у других почти в тексте. Надо для начала хоть с этим определиться.

Posted: Thu Apr 05, 2007 1:43 pm
by zhenya_k
Serge
Посмотри на тему табов и пробелов эту статейку. Мне она показалась стоящей внимания. К сожалению она ориентирована на высокоуровневые языки, к коим ассемблер трудно причислить.
http://dklab.ru/chicken/nablas/11.html

Mario79
если тебе еще и указывают, как ты должен работать
Я могу ответить только поговорками
"Век живи - век учись."
"Имеющий уши, да услышит"

Указывать - неверное слово, по отношению к моему предложению. Я наверно слишком круто обозвал тему, использовав слово "стандарт". Понимай его как рекомендацию. Если человеку ничего не рекомендовать, особенно хорошее, то он ничего и не узнает.
требовать соблюдения жестких стандартов
Насчёт "требовать" я уже выразился до этого. Здесь никто ничего не требует. По поводу "жестких" - я ничего пока ещё не навязал, и тем более не сказал, что надо делать только так. Моё дело предложить, дело других согласиться или поправить, и только некоторых дело - использовать.
Я конечно "зелёный" или "салага" для этого проекта, поэтому на меня можно просто наезжать, наверно этим и можно объяснить необъяснимые нападки.

Posted: Thu Apr 05, 2007 1:54 pm
by Mario79
zhenya_k
Боже мой! Да где ты увидел наезд и нападки? Я разве требовал прекратить работу в данном направлении?
Я просто привел свои аргументы, чтобы избежать впоследствии обязаловки. Уж очень у нас любят вводить обязаловку.
Стандарты действительно жизненно необходимы там, где без них ну никак нельзя. Например, протоколы коммутирования или научные проекты, где вложены большие суммы денег.
Просто разводить бюрократию на пустом месте было бы не самым лучшим решением.
Я совсем не хотел тебя обидеть или задеть, раз уж ты воспринял мои слова как наезд, мне очень жаль.

Posted: Thu Apr 05, 2007 1:55 pm
by SHREDER
Ну пусть будет стандарт и небольшая рефакторная программка которая приводит тексты к стандарту.

Такую муть как имена переменных и т.д. в стандарт лучше не включать, ну то есть если типа этого

db MyVaRible то пусть в стандарте будет db myVarible но не будет ограничений типа db BmyVarible.

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

Posted: Thu Apr 05, 2007 3:13 pm
by zhenya_k
Просто разводить бюрократию на пустом месте было бы не самым лучшим решением.
Я тоже согласен, что это похоже на бюрократию на пустом месте. Но также мне кажется, что это будет полезным.
К тому же я хочу чего-нибудь сделать на общее благо и это мне пока интересно, а такая мелочь мне вполне по силам.

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

Posted: Thu Apr 05, 2007 6:33 pm
by mike.dld
Mario79
Такое ощущение, что тебя это как-то касается. Ты же "из-за меня" уже год как ничего по ядру не пишешь. Кстати, что ты думаешь по поводу собственного стандарта (я про БДВК)?

SHREDER
Под правилами именования переменных я имел в виду нотацию, в которой они написаны. Согласись, есть разница между MYVAR, MyVAR, myVar и my_var. Также, не лишней является рекомендация по поводу того, что имя переменной должно соответствовать её использованию. Например, сейчас у нас в ядре есть MOUSE_VISIBLE (const.inc), хотя используется она так, что впору назвать её MOUSE_INVISIBLE.

All
У кого есть вопросы по моему видению такого "стандарта" и видению его другими, отметившимися здесь (там не только я сижу), - добро пожаловать на IRC: сервер kolibrios.org, порты 6665-6669, канал #general

Posted: Thu Apr 05, 2007 7:12 pm
by Serge
Ленин

Насчёт MOUSE_VISIBLE согласен. "Крестил" её я. Раньше это была безымянная [0xF204]. Практически все константы в верхнем регистре отыскивал и называл я. Потогму они все и в верхнем регистре чтобы знать что данные размещены по абсолютным адресам. ИМХО в системе таких переменных должно быть как можно меньше. Поэтому надо их обявить обычным образом через dd и дать подходящее имя.

Posted: Thu Apr 05, 2007 7:54 pm
by diamond
Serge
У меня такое впечатление, что в какой-то момент создания кода абсолютные адреса предназначались для возможности доступа к данным извне ядра... поэтому они и не определены как переменные внутри ядра...
Стандарт нужен даже на уровне форматирования текста. Я всегда делаю отступ на 12 знаков и не пользуюсь табуляцией. Некоторые выравнивают на 9. другие вставляют табы. Метки у одних с нулевым отступом у других почти в тексте. Надо для начала хоть с этим определиться.
Я использую табуляцию: команда начинается с позиции 9 (8 пробелов в начале), первый аргумент с позиции 17, дальнейшие через пробел. Тогда можно просто в начале строки долбануть Tab (который у меня в редакторе заменяется соответствующим числом пробелов) и между командой и аргументами - тоже один Tab. IMHO выровненные аргументы смотрятся красивше.