|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Coding Conventions Rationale25.09.2014, 14:36. Показов 2772. Ответов 32
Метки нет (Все метки)
В повседневной практике мы работаем над разного рода проектами. Будь то суровые enterprise решения, высоконагруженные сервисы или же интерфейсы пользователей, небольшие функциональные прототипы. Мы работаем над коммерческими продуктами или хобби проектами, а может быть и над чисто академическими программами. В любом случае, всегда хочется верить, что труды будут кому-нибудь полезны, а если и пойдут под нож, то станут бесценным опытом.
Но стоит только дать повод - всегда найдутся люди, которые побросают работу и будут поддерживать холивары о расстановке фигурных скобок, пробелов и стиле именования переменных. Тем не менее, я считаю, что есть некоторые соглашения, для соблюдения которых имеются вполне объективные причины. Ниже хочется описать их, немного разбавив вкусовщиной. Быть может, в ответ форумчане вспомнят что-нибудь интересное. 0. Ограничение максимальной длины строки Какое значение выбрать - дело вкуса, но ограничение должно быть. Указываю это правило под нулевым номером, поскольку несоблюдение нижеизложенных автоматически ведет к невозможности придерживаться этого соглашения. 1. Вертикальное выравнивание Правило простое - вертикальное выравнивание в коде должно отсутствовать. Если легкость чтения такого кода еще можно назвать субъективной, то поспорить с трудностью поддержки уже сложнее. Пример. Пусть имеется вот такой код (взят в одной из тем форума):
1. Добавление строки с аргументом. 2. Добавление запятой у предыдущего аргумента. Последствия. 1. Код сложно поддерживать. 2. Стиль не является diff-friendly. Мы постоянно смотрим диффы. В истории коммитов, в код ревью. Что будет показано людям в случае подобных изменений?
Альтернативный вариант.
Вкусовщина. Добавлена лишь потому, что предыдущий пример некоторые предлагают оформить следующим образом:
1. Перед запятой отсутствует пробельный символ. После запятой ставится пробел. 2. Знаки арифметических операций отделены одним пробелом с каждой стороны, за исключением унарных операций. 3. Перед открывающей круглой скобкой ставится пробел. После скобки пробел отсутствует. А вот вызов функции уже тяготеет к математической нотации, поэтому в этом случае пробел перед скобкой опускается. 3. Код внутри пространств имен пишется без дополнительного отступа В пользу этого правила можно приводить различные аргументы. Можно говорить,что нам не нужны дополнительные уровни вложенности. Особенно если в проекте присутствует множество вложенных пространств имен (см ограничение на длину строки). Можно рассуждать о блоках кода и отмечать семантическую разницу между телом функции и телом пространства имен. Но лично мне привычнее опираться на повседневные практики, а как я уже отмечал выше, одна из таких - это использование diff. Для примера я взял псевдокод алгоритма Дейкстры. Сейчас не важна его компилируемость и прочие элементы стиля, за исключением отступа внутри пространства имен.
Справедливости ради стоит отметить, что для поиска функции diff может использовать регулярное выражение, но в этот момент у меня включается лень: ни писать, ни гуглить регулярку для этого случая не хочется. Других правил оформления кода, обусловленных практическими потребностями, мне пока не вспоминается. Если есть идеи - welcome.
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 25.09.2014, 14:36 | |
|
Ответы с готовыми решениями:
32
Куда делись Code Conventions for the Java Programming Language? Good Coding Practices SOS Coding Input |
|
Модератор
|
|||||||||
| 06.10.2016, 20:30 | |||||||||
|
Добавлено через 12 минут Я лично отформатировал бы так
0
|
|||||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||||
| 06.10.2016, 20:39 | |||||
|
Добавлено через 8 минут
0
|
|||||
|
Модератор
|
||
| 06.10.2016, 21:06 | ||
|
1
|
||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 06.10.2016, 21:32 | |
|
0
|
|
|
53 / 53 / 19
Регистрация: 09.12.2015
Сообщений: 215
|
||
| 07.10.2016, 01:33 | ||
|
Чой-то?) Вот дочитываю его книгу. Там везде верблюжийСтиль. И вообще там не одна глава на эту тему.
0
|
||
|
704 / 109 / 21
Регистрация: 22.06.2014
Сообщений: 241
|
|
| 07.10.2016, 08:17 | |
|
Mr.X,, Я долго ждал, когда его стайл коллективно забросают какашками. Да, и в обратную сторону он умеет. Просто берёте сайт https://clangformat.com/ и создаёте свои правила, а потом генерируете файл конфигурации для этого своего стайла и прикручиваете к clang-format, но я очень надеюсь, что у вас не получится. =)
2
|
|
|
Модератор
|
||
| 07.10.2016, 09:22 | ||
|
Добавлено через 55 секунд Martein, опередил меня
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 08.10.2016, 23:34 | |||
|
о чем вам писал господин gru74ik ни в то, о чем пишет господин Макконелл. главное что бы не такое уг, как у господина Mr.X
0
|
|||
|
53 / 53 / 19
Регистрация: 09.12.2015
Сообщений: 215
|
||||||||||||||||
| 09.10.2016, 09:00 | ||||||||||||||||
|
hoggy, скорее пример некорректен. Я и не понял, что дело в скобках, ведь чтобы узнать для чего они нужны надо и другие элементы прочитать и понять.
В книге то Макконелл использует
В большинстве примеров из книг и статей на C++ я видел такое форматирование:
Но недавно встретил упоминание, уже не помню где, что имя метода лучше начинать с большой буквы, дабы выделить, что это метод класса. Такой код можно встретить в студии используя проекты C#
0
|
||||||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 09.10.2016, 11:44 | ||
|
даже не пытался. как глянул на "это", сразу подумал: "а оно мне вообще надо?"
0
|
||
| 09.10.2016, 11:44 | |
|
Где почитать о Coding convention for C#? Coding style или нет e-mail html format and coding problem Как разбить код на 2 функции: Coding и Decoding? CMA Gorenje W72Y2 sensocare, coding and test Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|