Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
###Cpp_лкц1_1.09_11_#дляБАК#29_01_12.doc
Скачиваний:
40
Добавлен:
29.04.2019
Размер:
6.42 Mб
Скачать

Глава 3. Технология создания программ 107

коллег (а еще лучше — врагов или завистников), и в тех местах, которые не будут им понятны без устных комментариев, внести их прямо в текст программы.

Комментарии имеют очень важное значение, поскольку программист, как ни странно, чаще читатель, чем писатель. Даже если сопровождающим программистом является автор программы, разбираться через год в плохо документированном тексте — сомнительное удовольствие.

Дальнейшие советы касаются комментариев и форматирования текста программы. Программы на C++ весьма плохо читаемы (лучше, чем программы на Perl, но хуже, чем на Pascal), и в них особенно важно придерживаться хорошего стиля при форматировании и документации.

«Программа без комментариев песопровождаема. Это... часовая бомба, а не компьютерная программа» [9]. Программа, если она используется, живет не один год, потребность в каких-то ее новых свойствах появляется сразу же после ввода в эксплуатацию, и сопровождение программы занимает гораздо больший промежуток времени, чем ее написание. Основная часть документации должна находиться в тексте программы. Хорошие комментарии написать почти так же сложно, как и хорошую программу.

Комментарии должны представлять собой правильные предложения без сокращений и со знаками препинания1 и не должны подтверждать очевидное (комментарии в этой книге не могут служить образцом, поскольку они предназначены для обучения, а не для сопровождения). Например, бессмысленны фразы типа «вызов функции f» или «описание переменных». Если комментарий к фрагменту программы занимает несколько строк, лучше разместить его до фрагмента, чем справа от него, и выровнять по вертикали. Абзацный отступ комментария должен соответствовать отступу комментируемого блока.

II Комментарий, описывающий,

// что происходит в следующем ниже

// блоке программы.

{ /* Непонятный

блок

программы */}

Для разделения функций и других логически законченных фрагментов пользуйтесь пустыми строками или комментарием вида

// Л

Вложенные блоки должны иметь отступ в 3-4 символа, причем блоки одного уровня вложенности должны быть выровнены по вертикали. Желательно, чтобы закрывающая фигурная скобка находилась строго под открывающей или в колонке, соответсвующей уровню вложенности блока. Форматируйте текст по столбцам везде, где это возможно:

#iпс1 tide <string.h> #include <stdlib.h> int main(){

Совсем хорошо, если они при этом не будут содержать орфографических ошибок.

108

Часть I. Структурное программирование

double m[10]; // комментарий const char s[] = "2, 38.5. 70, 0. 0. 1"; // комментарий char *p = s; .// комментарий int i = 0; // комментарий //

do{

m[i++] = atof(p); if (i > 9) break; }while(p = strchr(p, '.'), p++); for( int k = 0; k<i; k++) printf("*5.2f ". m[k]); return 0; } Для улучшения ясности можно отступить от правила отступов:

if ( is_best ) bestO;

else if ( is_bad ) worseO;

else if ( is_vovochka ) worstO;

Помечайте конец длинного составного оператора:

while(l){

while(gets(s)){

for(i = 0; i<10; i++){ for(j - 0; j<10: j++){

// две страницы кода } // for(j = 0; j<10: j++) } // for(i = 0; i<10; i++) } // while(gets(s)) } // while(l)

He следует размещать в одной строке много операторов. Как и в русском языке, после знаков препинания должны использоваться пробелы:

f=a+b;// плохо! Лучше f = а + Ь;

Очень много конкретных рекомендаций по программированию и проектированию программ на C++ содержится в книге Алена И. Голуба [9]. Массу интересного можно почерпнуть, осилив без малого 1000 страниц книги Б. Страуструпа [17]. В заключение хотелось бы привести цитату из этой книги: «Вопрос "Как писать хорошие программы на C++?" напоминает вопрос "Как писать хорошую английскую прозу?". Есть два совета: "Знай, что хочешь сказать" и "Тренируйся. Подражай хорошему стилю". Оба совета годятся как для C++, так и для английской прозы, и обоим одинаково сложно следовать.»