четверг, 23 октября 2014 г.

Стиль оформления кода. Вместо вступления

Читая чужой код, или даже свой собственный (спустя неделю-месяц-год), наверняка каждый хоть раз да испытывал это ощущение “вырви глаз”. Ощущение, когда не покидает мысль: “да это проще переписать заново, чем разбираться в этом”. Речь конечно идёт о стиле оформления кода.

Стиль оформления – это форматирование кода (пробелы, отступы, переносы строк), соглашение об именовании (регистр букв и допустимые символы при написании идентификаторов, директив и зарезервированных слов), а также набор неких правил, используемых при кодировании (именование идентификаторов, комментирование кода, расположение программных блоков относительно друг-друга в рамках одного исходного текста и разделение кода по файлам).

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

Немножко лирики

Если Вы утверждаете, что Вам всё равно, как оформлен код, то выделяйте пожалуйста, Вам ещё всё равно, или уже всё равно. И вот почему.

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

Затем, набивая раз за разом себе шишки о собственный же код, рано или поздно многие программисты “прозревают”, и по-тихоньку приходят к неким стилевым правилам самостоятельно. И это хорошо. Назовём такое прозрение первой ступенью.

Одно плохо. Чувство стиля – оно сугубо субъективно. При постоянном кодировании оно имеет тенденцию к развитию. И чем сильнее это чувство развито, тем больнее воспринимается “плохой” код. Назовём это второй ступенью, когда при чтении кода, оформленного в “другом” стиле вызываются негативные эмоции вплоть до не понимания кода.

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

И на нулевой ступени и на третьей – нам всё равно. Но между ними лежит огромная пропасть.

 

Конечно, эти ступени весьма условны (я их вот сейчас сходу выдумал). Но есть очень важный момент – развить в себе правильное чувство стиля. Стремиться к тому стилю, который используют большинство программистов. И тогда негативные эмоции на второй ступени можно свести к минимуму.

Проблема

Не существует общепринятых правил. Даже справка в самой Delphi пестрит разнообразием стилей (мол смотрите, вы можете написать и таК, и ТаК и ТАк, а мы это откомпилируем). Ну и конечно наследие: когда-то давно мониторы были маленькими, текста на экране помещалось мало, не было подсветки синтаксиса и т.п. А времена меняются, язык расширяется, среда IDE Delphi обзаводится всякими вкусностями… Мне вот становится очевидным, что должен быть официальный, поддерживаемый (обновляемый) документ с набором рекомендаций от Embarcadero. А придерживаться этого документа, или нет – конечно дело каждого. Но для фрилансеров (которые отдают свой код заказчику), бибилотеко/компонентописателей (которые публикуют свой код) и для программистских отделов/компаний (где работает более одного программиста) такой документ был бы крайне полезен. Мм.. преподавателей забыл упомянуть – это тоже важно.

Но чего нет – так нет. А когда самодисциплины не хватает – приходится самостоятельно составлять некую инструкцию и принимать её внутри компании. Конечно есть вещи, которые нельзя вынести за пределы компании, но я надеюсь получить документ, который можно будет опубликовать. (Т.е. в  итоге, наверное, будет два документа – общие требования и внутренние.)

Сейчас такой процесс у нас (наконец-то?) запущен. Скорее всего, я буду постепенно публиковать некоторые правила (ну чтобы получить фидбэк – это очень важно), а потом в конце всё сведу в отдельный файл.

С чего начать

Если Вы находитесь на нулевой или первой стадии (а также просто для общего развития) рекомендуется к прочтению:

А также:

 

Если у Вас есть полезные ссылки – добавляйте в комментарии. Если у Вас есть свой набор правил или свои инструкции – пишите, можно на e-mail (есть в профиле) или g+. Я постараюсь принять к сведению, может быть получится что-то обобщить.

 

P.S.: Вот у меня сейчас очень близко к третьей ступени, и я боюсь, что когда я на неё поднимусь, мне будет всё равно настолько, что я не буду делать никаких документов и писать на эту тему заметки в блог. А пока меня это тема ещё волнует – не проходите мимо, Ваши комментарии (советы, замечания, критика) служат хорошим стимулом для продолжения.

5 коммент.:

Viktor Demydov комментирует...

ИМХО документ с описанием стиля кодирования нужен, но только для обоснования принятых стандартов. Но гораздо важнее наличие форматтера кода, который сможет в автоматическом режиме проверить, а еще лучше подогнать файл под желаемый стиль кодирования.

Владимир Строкин комментирует...

Я вот пользуюсь стандартным автоформаттером в делфи по Ctrl+D. А вас устраивает такой стиль форматирования кода? Можно считать этот формат как единый принятый?

Николай Зверев комментирует...

Владимир,
В Delphi 2010 он себя вообще криво ведёт - пользоваться невозможно. В Delphi XE7 - пока кривизны замечено не было, но по некоторым пунктам он меня всё же не устраивает. (Даже после донастройки.) Но лучше пользоваться им, чем не форматировать код вообще.

В своём документе автоформаттер я буду рекомендовать как отправную точку. Даже думал сначала просто на него сослаться и всё.

Ingword комментирует...

Был инициатором внедрения, в свое время на одной из компаний. Реально надоело, Ваня пишет так, а Оля так. В итоге, пусть и мучительно но документ был составлен и принят. И живет до сих пор. Если у Вас в компании возникают перепалки по тем или иным пунктам документа. Смело проявляйте диктатуру. В этом документе главное не детали, а суть -"все код пишут одинаково". А к любым деталям народ за пару месяцев привыкнет.

Kverde комментирует...

Как то хотел на github, сводный документ сделать в удобном виде, начал https://github.com/Kverde/delphi-style-guide но пока закончить руки не дошли. Там есть ссылки на статьи по этой теме и на автоматические форматтеры.

Отправить комментарий

.

.