Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

9.3. Имена Имена объектов программы должны быть осмысленными.

Пример.

tip razmer adress

Hе надо!

xx aa a1 a2

В настоящее время во всем мире приняты 2 системы записи (нотации) имен: "паскалевская" и "венгерская". Обе рекомендуют использовать имена, состоящие, в общем случае, из нескольких слов. В "паскалевской" нотации каждое слово начинают с прописной буквы.

Пример.

BegKm EndKm FieldName

В "венгерской" нотации перед именем записывается тип объекта программы.

Пример.

intBegKm intEndKm charFieldName

Не используйте в программе сходные имена!

Пример.

value values

ax1 axi

k K

Если имя содержит цифры, записывайте их в конце.

Пример.

fund1 Tab15

Имя не должно совпадать с ключевым словом (для языков, где ключевые слова не резервируются) или с именем библиотечной или встроенной функции.

В языках Basic и С ключевые слова зарезервированы, т.е. при подобном совпадении транслятор выдает ошибку. Однако в некоторых языках допустимы такие конструкции.

Пример. PL/1.

if if = then then

then=else;

else

else=if;

9.4. Язык и приемы программирования

1. Активно используйте удобные и понятные особенности языка.

Пример.

C a=b=0; k++; x+=c; //Многократное присваивание – это удобно!

Basic x=5 : y=x^3-2 '2-3 связанные короткие инструкции в 1 строку

2. Изучайте и используйте библиотечные функции. Малоупотребительные комментируйте.

Пример.

/* pow(x,n) – возведение x в степень n */

3. Не применяйте трюки!

Пример. Формирование единичной матрицы.

for(k=0; k<n; k++){

for(m=0; m<n; m++){

x[k][m]=((k+1)/(m+1))*((m+1)/(k+1)); // Это трюк!

}

}

То же самое можно записать так.

for(k=0; k<n; k++){

for(m=0; m<n; m++){

x[k][m]=0;

}

x[k][k]=1;

}

4. Не игнорируйте предупреждения и старайтесь их ликвидировать!

Предупреждение при трансляции в большинстве случаев указывает место возможной ошибки.

Conversion may lose signicant digitsПри преобразовании могут быть потеряны значащие цифры. Возникает, например, при попытке присваивания short=long (C) или integer=long (Basic).

Parameter 'doc' is never used Параметр 'doc' никогда не используется. Чаще всего возникает после модификации выполняемых инструкций программы, когда необходимость в параметре doc отпала, а в объявлении или в списке параметров процедуры он сохранился.

5. Избегайте промежуточных переменных. Формулы следует в записывать в том же виде, как это принято в математике.

Пример.

y=2*(a+b) / sqrt((a+b)*(a+b)+(c+d)*(c+d));

6. Не изменяйте значение параметра цикла внутри тела цикла.

Это затрудняет понимание логики программы. Кроме того, некоторые языки программирования (Fortran) в целях оптимизации по времени работы помещают копию параметра цикла в регистр процессора. В этом случае изменение параметра цикла в теле цикла не повлияет на условие его выполнения, что почти наверняка приведет к ошибке.

7. Избегайте инструкций перехода.

Эти инструкции нарушают естественный порядок выполнения программы. Придерживайтесь принципа: текст программы надо читать как книгу слева направо и сверху вниз.

Не используйте помеченные инструкции, на которые нет ссылок.

Единственный смысл такого применения меток – это дополнительное комментирование. Зачем тогда комментарии языка?

8. Объявляйте все переменные явно.

Явное объявление, кроме своей основной функции определения типа объекта программы, позволяет выявить 1 весьма распространенный вид ошибок – описки. Применение подобных имен в тексте вызовет ошибку или предупреждение при трансляции.

9. Не используйте одни и те же переменные для различных целей.

При последующей модификации одного фрагмента программы такие переменные могут вызвать ошибку в другом фрагменте.

10. Не забывайте, что данные с плавающей точкой есть приближенные представления десятичных значений.

Для них с осторожностью надо применять операции равно и не равно.

Пример. Цикл с вещественным параметром.

for x=0 to 2 step 0.05

........................

next x

Проход по телу цикла при x=2 может не выполниться. Необходимо записывать так:

for x=0 to 2.02 step 0.05

........................

next x

11. Используйте исчерпывающие проверки.

Если переменная должна принимать значения 1|2|3, не следует полагать, что ее значение равно 3, если оно не равно 1 и не равно 2, т.к. возможны ошибки.

9.5. Стиль в языках С и Basic

По оценке авторов:

ОВ – весьма важная рекомендация;

В – рекомендация средней важности;

МВ – рекомендация относительно малой важности.

Степень важности рекомендаций определялась на основании оценки их влияния на написание надежной (с минимумом ошибок) программы.

1. (В) Имена. Использовать "паскалевскую" или "венгерскую" нотации.

2. (В) Описатели. Поскольку различные трансляторы языка C отводят данным типа int 2 или 4 байта, использовать для обычных целых тип short, длина элемента которого всегда 2 байта, для длинных целых long – длина всегда 4 байта. Если постановка задачи не требует повышенной точности представления, использовать для данных с плавающей точкой типы float (C) и single (Basic).