Я люблю называть константы с большой буквы, а переменные, напротив, с маленькой. Так в любом фрагменте кода сразу видно где значение постоянное, а где переменное. Без заглядываний вверх по тексту.
Также у нас был диалог с Сашей Ильиным, в результате которого он научил меня одной полезной вещи для более удобной разработки с системами контроля версий. Хочу поделиться также с вами, в надежде, что это будет кому-то интересно. Извините за такую форму изложения, но такова была подача информации, делать из неё статью предлагаю кому-то другому, если захочется.
Цитата:
Zorko
Я раньше называл константы только большими буквами, потом откатился до ВотТакогоСтиляКонстант и вотТакогоПеременных, а большие буквы отвёл типам, но теперь склоняюсь к тому, что типы тоже надо называть ПримерноВотТак, чтобы более легко отличать их от стандартных. Смысл – чтобы сразу отличать константы от переменных в тексте программы. Ведь по контексту не перепутаешь идентификатор константы с процедурой или типом.
Sasha
По официальной рекомендации в ББ константы именуются с маленькой буквы. А я с большой стал у себя называть. Есть вот такой интересный пассаж про процедуры:
A procedure always starts with a capital letter, this is true for procedure constants, types, variables, parameters, and record fields.
Zorko
Если с большой, то по контексту понятно где константа, а где переменная. Но согласись, что невозможно перепутать константу с типом или процедурой. Даже для процедур с результатами придуман интересный Пассаж(). И совершенно правильно придуман, как раз вводит полезное различие.
Sasha
Т.е. процедурные переменные должны бы называться с большой буквы, даже если они являются параметрами или полями записи (если я правильно понял).
Zorko
А, процедурные переменные. Это понятно. А как насчёт процедурных констант, что это такое они имели ввиду?
Sasha
Ну, обычную процедуру, наверное
Zorko
Тогда это меняет дело в сторону смысла объявления констант с маленькой буквы. Но мне было бы приятнее с большой. Почему-то. Может даже без логической аргументации. Просто так кажется более удобным. Ведь не так часто используются процедурные переменные. Да и отличить их можно по параметрам (включая пустые () ). Правда, их не перепутаешь с константой. И по имени процедуры не видно – переменная ли это процедурного типа, или же идентификатор статической процедуры.
Sasha
Мне больше нравятся константы с большой буквы, это их выделяет и подчёркивает особую роль. Когда присваиваешь переменной константу, то сразу видно, что это инициализация, а не какой-то рабочий момент переливания из одной переменной в другую.
Zorko
Я, пожалуй, тоже останусь на наименовании констант с большой буквы. ведь в доках ББ – это просто рекомендация. А потом, основываясь на ней, программист сам вырабатывает свой стиль наименования.
Sasha
А процедурные переменные я с маленькой буквы называю – их и так видно, что они процедуры, когда их вызываешь, – по скобкам. Переменная – значит с маленькой буквы, всё остальное с большой. Вот моё правило.
Zorko
Что ж, мне нравится твой стиль. Потому что так в тексте программы появляется дополнительная информация, является ли объект переменной. А процедура это или нет – видно из способа использования.
Вот здесь в посте Евгения Темиргалеева
viewtopic.php?f=80&t=1710 упоминается Programming Conventions:
Цитата:
6. Точки с запятыми
Точки с запятыми используются для разделения операторов, а не для их завершения. Это означает, что не должно быть излишних точек с запятыми.
Так вот, я раньше тоже использовал “;” для разделения. А вот такой разговор повлиял на моё понимание вопроса существенно.
Цитата:
Sasha
Что скажешь про лишние ";"? Убираешь их или не обращаешь внимания?
Zorko
Сам лишние ";" стараюсь не ставить, но где встречаю – не смертельно. Мне старинная советская книга попалась в детстве, про Паскаль на PDP-11. Из неё я понял, что “BEGIN Op1; Op2 END” – это составное выражение. Поэтому не ставить ";" перед END стало привычкой.
Sasha
Я чужое не переписываю (как в случае с LOOP'ами), свой код пишу со следующим правилом:
ставлю ";" после всех операторов, кроме RETURN и EXIT. Просто чтобы после RETURN код не "забыть".
Zorko
А при объявлении записей перед END ?
Sasha
Тоже ставлю. Это делаю для того, чтобы можно было любые 2 строки поменять местами без лишней мелкой правки. Copy-paste тогда работает беЗшовно
Zorky
Я не против перейти на твой стиль кодинга. А могу остаться на своём, если тебя он не смущает.
Sasha
Ещё одна причина есть для ";" везде: контроль версий. По поводу ";" и контроля версий: когда начнёшь сравнивать соседние версии файлов, то увидишь, что строки с изменениями подсвечиваются, выделяются цветом. Когда делаешь это помногу, то удобнее, чтобы подсвечивалось только то, что действительно важно, что имеет отношение к сути внесённого изменения. В этот момент начинают мешать соседние строки, на которые ты только лишь добавил ";", чтобы написать новый код ниже. Понимаешь?
Zorko
Ага. Оградить мозг от лишней несущественной информации. Это святая правда, кто юзал SVN или GIT – поймёт.
Sasha
Так что не только copy-paste, хотя и он тоже. В Notepad++ постоянно пользуюсь комбинацией Ctrl+Shift+Up/Down - для перемещения текущей строки выше или ниже по тексту
Я только после RETURN не ставлю ";", чтобы компилятор ругался, если что
а все оставльные строки заканчиваются ";" – это связано со инструментами
1) система контроля версий показывает более чистую разницу, если при удалении последней строки не правилась предпоследняя (удаление ";")
2) клавиши Ctrl+Shift+Up/Down в Notepad++ позволяют перемещать строку выше/ниже в тексте; после этой автоматизации вручную удалять или добавлять ";" - явно лишний шаг, пусть уж лучше будут везде
Zorko
Совершенно справедливо. Правда, я пытался показать одному человеку достоинства такой системы, но, по-моему, не убедил его. Это кстати был DarkLord/Madzi (Дмитрий Елисеев)
Sasha
А вообще, идея ставить ";" только если далее есть ещё операторы – это несколько странное эстетство. Да и вообще, все эти ";" можно ставить в начале строки. Будет похоже на ассемблерные комментарии
Zorko
Конечно, их можно ставить скопом по несколько штук, компилятор не ругается. Кроме случаев типа “WHILE a DO ;” в Паскале. но в Обероне такого нет.
Вот так я перешёл на ";" перед и после END, ну вобщем, перенял стиль, рекомендованный Александром. Оценил удобство. При работе с системами контроля версий это действительно очень экономит время и внимание.