Я думаю, что на самом деле есть две вещи, которые нужно рассмотреть, и я бы на самом деле рассмотрел их по отдельности, потому что к ним нельзя подходить одинаково, хотя я считаю, что обе они важны.
- Технический аспект: который направлен на то, чтобы избежать рискованного или некорректного кода (даже если он принят компилятором / интерпретатором)
- Аспект представления: что касается разъяснения программы читателям
Технический аспект, который я квалифицирую как Стандарт кодирования , как и Херб Саттер и Андрей Александреску с их стандартами кодирования C ++ . Презентация, которую я квалифицирую как стиль кодирования , который включает соглашение об именах, отступы и т. Д.
Стандарт кодирования
Поскольку он является чисто техническим, стандарт кодирования может быть в основном объективным. Таким образом, каждое правило должно быть обосновано. В книге, на которую я ссылаюсь, каждый пункт имеет:
- Название, простое и точное
- Резюме, которое объясняет название
- Дискуссия, которая иллюстрирует вопрос о том, как поступить иначе, и, таким образом, содержит обоснование
- необязательно Некоторые примеры, потому что хороший пример стоит тысячи слов
- необязательный Список исключений, для которых это правило не может быть применено, иногда с обходными решениями
- Список ссылок (другие книги, сайты), которые обсуждали этот пункт
Обоснование и исключения очень важны, так как они суммируют, почему и когда.
Заголовок должен быть достаточно явным, чтобы при проверке нужно было иметь только список заголовков (шпаргалку) для работы. И, очевидно, сгруппируйте элементы по категориям, чтобы было легче их найти.
Саттеру и Александреску удалось составить список всего из сотен предметов, хотя С ++ считается волосатым;)
Стиль кодирования
Эта часть, как правило, менее объективна (и может быть совершенно субъективной). Намерение здесь состоит в том, чтобы гарантировать последовательность, потому что это помогает сопровождающим и новичкам.
Вы не хотите вступать в священную войну о том, какой отступ или стиль скобок лучше здесь, для этого есть форумы: так что в этой категории вы делаете вещи консенсусом> большинством голосов> произвольным решением лидера (ов).
Пример форматирования см. В списке опций художественного стиля. . В идеале, правила должны быть достаточно ясными и полными, чтобы программа могла переписать код (хотя вряд ли вы когда-нибудь будете его кодировать;))
Для соглашения об именах я бы попытался сделать класс / типы легко отличимыми от переменных / атрибутов.
Также в этой категории я классифицирую «меры» как:
- предпочитают короткие или длинные методы: обычно трудно договориться о том, что такое длинный
- предпочитаю досрочный возврат / продолжение / перерыв, чтобы уменьшить отступы
Разное?
И, наконец, последнее слово, которое редко, если вообще когда-либо обсуждается в стандартах кодирования, возможно, из-за его специфики для каждого приложения: организация кода. Архитектурный вопрос, пожалуй, самый выдающийся, облажайте первоначальный дизайн, и вы будете страдать от него через много лет. Возможно, вам следует добавить раздел для базовой обработки файлов: общие / частные заголовки, управление зависимостями, разделение задач, взаимодействие с другими системами или библиотеками ...
Но это ничто, если они на самом деле не применяются и не применяются .
Любое нарушение должно быть выявлено во время проверки кода, и никакое рассмотрение кода не должно быть в порядке, если нарушение обнаружено:
- исправить код, чтобы соответствовать правилу
- исправить правило, чтобы код больше не выделялся
Очевидно, что изменение правила означает получение «лидера».