|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Coding Conventions Rationale25.09.2014, 14:36. Показов 2717. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|