OberonCore https://forum.oberoncore.ru/ |
|
Какие предпочитаете отступления от конвенций ББ? https://forum.oberoncore.ru/viewtopic.php?f=29&t=3892 |
Страница 1 из 1 |
Автор: | Oleg N. Cher [ Среда, 14 Март, 2012 13:30 ] |
Заголовок сообщения: | Какие предпочитаете отступления от конвенций ББ? |
Я люблю называть константы с большой буквы, а переменные, напротив, с маленькой. Так в любом фрагменте кода сразу видно где значение постоянное, а где переменное. Без заглядываний вверх по тексту. Также у нас был диалог с Сашей Ильиным, в результате которого он научил меня одной полезной вещи для более удобной разработки с системами контроля версий. Хочу поделиться также с вами, в надежде, что это будет кому-то интересно. Извините за такую форму изложения, но такова была подача информации, делать из неё статью предлагаю кому-то другому, если захочется. Цитата: 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, ну вобщем, перенял стиль, рекомендованный Александром. Оценил удобство. При работе с системами контроля версий это действительно очень экономит время и внимание. |
Автор: | Иван Кузьмицкий [ Среда, 14 Март, 2012 14:29 ] |
Заголовок сообщения: | Re: Какие предпочитаете отступления от конвенций ББ? |
Oleg N. Cher писал(а): Вот так я перешёл на ";" перед и после END, ну вобщем, перенял стиль, рекомендованный Александром. Оценил удобство. При работе с системами контроля версий это действительно очень экономит время и внимание. Я, наоборот, стараюсь перед END не ставить ";" никогда, потому что отсутствие точки с запятой говорит про финальный вариант кода. Обозначает, что в этом месте код проработан, завершён. Ну а если всё же встречается ";", то это говорит о том, что место сыровато и подвержено дополнениям. |
Автор: | Oleg N. Cher [ Среда, 14 Март, 2012 14:44 ] |
Заголовок сообщения: | Re: Какие предпочитаете отступления от конвенций ББ? |
Иван Кузьмицкий писал(а): Я, наоборот, стараюсь перед END не ставить ";" никогда, потому что отсутствие точки с запятой говорит про финальный вариант кода. А Вам в финальном, проработанном и завершённом варианте кода никогда не приходилось добавлять перед END ещё пару строк кода? А потом – всё это в SVN... |
Автор: | Пётр Кушнир [ Среда, 14 Март, 2012 14:45 ] |
Заголовок сообщения: | Re: Какие предпочитаете отступления от конвенций ББ? |
в операторах CASE и WITH пропускаю первый элемент и сразу ставлю | Код: WITH
|x: MyType DO |x: YourType DO ELSE END; |
Автор: | Иван Кузьмицкий [ Среда, 14 Март, 2012 14:49 ] |
Заголовок сообщения: | Re: Какие предпочитаете отступления от конвенций ББ? |
Пётр Кушнир писал(а): в операторах CASE и WITH пропускаю первый элемент и сразу ставлю | Код: WITH |x: MyType DO |x: YourType DO ELSE END; Пустой оператор в WITH труднообъясним. Мне лично режет глаза, потому что обычно на первом месте что-то есть! Oleg N. Cher писал(а): А Вам в финальном, проработанном и завершённом варианте кода никогда не приходилось добавлять перед END ещё пару строк кода? А потом – всё это в SVN... Тысячу раз приходилось. И в Mercurial. И вот что могу сказать - усилие, чтобы лишний раз клацнуть на ";" стоит того, чтобы остановиться и подумать - а всё ли правильно ты делаешь.
|
Автор: | Пётр Кушнир [ Среда, 14 Март, 2012 15:03 ] |
Заголовок сообщения: | Re: Какие предпочитаете отступления от конвенций ББ? |
в некоторых случаях можно сказать, что там все места - вторые. Выделение первого среди равных типа данных необъяснимо. Разве что какая-то исторически сложившаяся разница во времени создания проверяемых типов, когда изначально существовал только один. |
Автор: | Иван Кузьмицкий [ Среда, 14 Март, 2012 15:39 ] |
Заголовок сообщения: | Re: Какие предпочитаете отступления от конвенций ББ? |
Пётр Кушнир писал(а): в некоторых случаях можно сказать, что там все места - вторые. Выделение первого среди равных типа данных необъяснимо. Разве что какая-то исторически сложившаяся разница во времени создания проверяемых типов, когда изначально существовал только один. WITH первый | второй | третий ELSE END или WITH | второй | третий ELSE END Мозг бьет тревогу, не находя первого оператора на своём месте. Вдруг, это ошибка? Случайно стёрли или осознанно? |
Автор: | Axcel [ Среда, 14 Март, 2012 16:03 ] |
Заголовок сообщения: | Re: Какие предпочитаете отступления от конвенций ББ? |
По поводу ";". Помнится в Алголе 68 на лишние ";" ругался компилятор. Так там был типовой рабочий момент: после компиляции получаешь простыню с ошибками, среди которых ошибок из-за ";" 99%. |
Автор: | Евгений Темиргалеев [ Воскресенье, 22 Апрель, 2012 17:09 ] |
Заголовок сообщения: | Re: Какие предпочитаете отступления от конвенций ББ? |
Мне кажется, отступления должны быть объективно обоснованными. Если же говорить про отступления по причине "мне так больше нравится", то пропадает смысл упоминать про какие-либо соглашения... Одна заметка (поправка) у меня есть: RETURN обозначает нелокальную передачу управления, если он не последний оператор в процедуре. Соответственно, если писать в стиле Оберона-07, то красить ретурны не надо... Вот я и перестал красить --- проку от покраски никакого, только глаза мозолит. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |