
- •Оглавление
- •2. Реализация
- •3. Обслуживание
- •1.1.1. Усовершенствование каскадной модели
- •1.1.2. Определение фаз жизненного цикла
- •Основные работы над проектом
- •1.2. Виды программных документов
- •1.3.Требования к программным документам, содержащим в основном сплошной текст по гост 19.106-78
- •1.3.1. Текст документа по гост 19.106-78
- •1.4. Правила оформления исходного текста программ
- •1.4.1. Методы повышения информативности программ
- •1.4.2. Количество операторов в строке
- •1.4.3. Отступы
- •1.4.4. Основные правила использования отступов таковы.
- •1.4.5. Операторные скобки
- •1.4.6. Пробелы
- •1.4.7. Пустые строки
- •1.4.8. Имена
- •1.4.9. Комментарии
- •1.5. Методы тестирования по
- •1.5.1. Аксиомы тестирования
- •1.5.2. Уровни тестирования
- •1.5.3. Статическое и динамическое тестирование
- •1.6.3. Состав
- •2. Практическая часть
- •2.1.Требования, предъявляемые к программе
- •2.2. Цели, достигаемые в процессе создания программы
- •2.3. Внешние спецификации
- •2.3.1. Интерфейс приложения и интерфейсные спецификации
- •2.3.2. Спецификации входных и выходных данных
- •2.4. Сценарий работы программы
- •2.5. Алгоритм программы
- •2.6. Тестовые наборы
- •Литература
1.4.3. Отступы
Правильное использование отступов являются ключевым методом обеспечения читаемости. Идея состоит в том, что отступы зрительно
показывают подчиненность (иерархию) операторов. При этом директивы препроцессора (#include, #define и т.д.), описания классов, структур, типов, глобальных данных и определения функций всегда имеют наивысший приоритет, то есть начинаются с крайней левой позиции.
1.4.4. Основные правила использования отступов таковы.
Правило 1. Операторы одного уровня иерархии должны иметь равный отступ:
Правило 2. Подчиненные операторы должны быть сдвинуты вправо по отношению к управляющему оператору, образуя следующий уровень иерархии:
Правило 3. Размер сдвига должен быть постоянным:
Размер сдвига не должен быть ни слишком мал, ни слишком велик. Оптимальная величина составляет 2-5 пробелов. Наиболее часто для сдвигов используют табуляцию, устанавливая при этом для нее желаемый шаг. Последняя возможность поддерживается большинством интегрированных сред разработчика.
1.4.5. Операторные скобки
Существует два основных стиля расстановки операторных скобок. При использовании первого стиля открывающаяся скобка помещается на той же строке, что и управляющая конструкция, а закрывающаяся - строго на уровне управляющей конструкции:
int factorial( int n ) {
if( n > 1 )
return n * factorial( n-1 );
if( n < 0 ) {
fprintf( stderr, "Factorial error: negative argument\n" );
return -1; //Заведомо невозможный результат
}
return 1;
}
Второй подход покажем на том же примере:
int factorial( int n )
{
if( n > 1 )
return n * factorial( n-1 );
if( n < 0 )
{
fprintf( stderr, "Factorial error: negative argument\n" );
return -1; //Заведомо невозможный результат
}
return 1;
}
Как видно, отличие состоит в положении открывающейся скобки. Однако закрывающаяся скобка в обоих случаях должна находится на уровне управляющего оператора или описания.
Многим специалистам представляется, что второй подход оправдан в большей мере, так как обеспечивает улучшенную наглядность. Открывающаяся и закрывающаяся скобки при этом располагаются строго друг под другом, что помогает находить начало и конец составного оператора, функции или описания класса.
Заметим, что наличие или отсутствие скобок не влияет на наличие и размер отступов, что видно в приведенных примерах.
Изредка можно встретить еще и третий стиль, подобный второму, но характеризующийся расположением скобок где-нибудь внутри отступа:
int factorial( int n )
{
if( n > 1 )
return n * factorial( n-1 );
if( n < 0 )
{
fprintf( stderr, "Factorial error: negative argument\n" );
return -1; //Заведомо невозможный результат
}
return 1;
}
Этот стиль, несомненно, хуже второго, поскольку не только не привносит какой-либо дополнительной ясности, но и несколько снижает ее. Во-первых, выбор положения скобок где-то внутри отступа произволен и ничем не обоснован. Во-вторых, количество вертикальных зрительных линий отступов из-за этого удваивается и составляет вместо обычных четырех-пяти линий восемь-десять, что снижает наглядность без повышения информативности.