Правила для систем с жесткими условиями реального времени и систем, предъявляющих особые требования к вопросам безопасности, применяются только в проектах, которые явно такими объявлены.
По сравнению с хорошими реальными стандартами программирования наша терминология является недостаточно точной (например, что значит, “система, предъявляющая особые требования к вопросам безопасности”), а правила слишком лаконичны. Сходство между этими правилами и правилами JSF++ (см. раздел 25.6.3) не является случайным; я лично помогал формулировать правила JSF++. Однако примеры кодов в этой книге не следуют этим правилам — в конце концов, книга не является программой для систем, предъявляющих особые требования к вопросам безопасности.
R100. Любая функция или класс не должны содержать больше 200 логических строк кода (без учета комментариев).
r101. Любая функция или класс должны помещаться на экране и решать одну задачу.
R102. Любая программа должна соответствовать стандарту языка С++ ISO/IEC 14882:2003(E).
R200. Нельзя использовать никаких макросов, за исключением директив управления исходными текстами #ifdef
и #ifndef
.
R201. Директива #include
должна использоваться только для включения заголовочных файлов (*.h
).
#include
используется для доступа к объявлениям интерфейса, а не к деталям реализации.
R202. Директивы #include
должны предшествовать всем объявлениям, не относящимся к препроцессору.
#include
, находящаяся в середине файла, скорее всего, будет не замечена читателем и вызовет недоразумения, связанные с тем, что область видимости разных имен в разных местах разрешается по-разному.
R203. Заголовочные файлы (*.h
) не должны содержать определение не константных переменных или не подставляемых нешаблонных функций.
R300. В пределах одного и того же исходного файла следует использовать согласованное выравнивание.
R301. Каждая новая инструкция должна начинаться с новой строки.
Пример:
int a = 7; x = a+7; f(x,9); // нарушение
int a = 7; // OK
x = a+7; // OK
f(x,9); // OK
Пример:
if (p
Пример:
if (p
cout << *p; // OK
R302. Идентификаторы должны быть информативными.
Идентификаторы могут состоять из общепринятых аббревиатур и акронимов.
В некоторых ситуациях имена x
, y
, i
, j
и т.д. являются информативными.
Следует использовать стиль number_of_elements
, а не numberOfElements
.
Венгерский стиль использовать не следует.
Только имена типов, шаблонов и пространств имен могут начинаться с прописной буквы.
Избегайте слишком длинных имен.
Device_driver
и Buffer_pool
.
#include
.
R303. Не следует использовать идентификаторы, которые различаются только по перечисленным ниже признакам.
• Смесь прописных и строчных букв.
• Наличие/отсутствие символа подчеркивания.
• Замена буквы O цифрой 0 или буквой D.
• Замена буквы I цифрой 1 или буквой l.
• Замена буквы S цифрой 5.
• Замена буквы Z цифрой 2.
• Замена буквы n буквой h.
Head и head // нарушение
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT