Упрощайте логические выражения в операторах if
· Избегайте вызова «лишних» функций и сравнений
Вместо (not(x>x_left)) or (not(x<x_right)) следует написать выражение:
(x<=x_left) or (x>=x_right)
Если Вы хотите выяснить, равно ли значение логической переменной b истина – НЕ пишите в операторе if: not(Ord(b)=0) или Ord(b)=1 или b=True. Напишите просто: if b then …
· Используйте дополнительные логические переменные для понимания и упрощения кода
Например, оператор if имеет вид:
If (elementIndex<0) or (elementIndex>MAX_ELEMENT) or
(elementIndex = LAST_ELEVENT) then…
Добавим в программу две логических переменных violation (нарушение), и completion (завершение) и определим их следующим образом:
violation:= (elementIndex<0) or (elementIndex>MAX_ELEMENT);
completion:= (elementIndex = LAST_ELEVENT);
Тогда оператор if можно записать так:
If violation or completion then…
Упрощайте структуру цикла
· Используйте оператор цикла for, если известно число повторений, и оператор while в других случаях
· Не изменяйте в «теле» цикла for значение показателя цикла!
· Вычисления, не изменяемые в цикле, следует вынести за его пределы
Например, переменная value вычисляется следующим образом:
for i:=0 to Count-1 do begin
value:= (i+1) Ý BaseValue Ý DELTA;
. ..
end;
Видно, что значение произведения BaseValue Ý DELTA не зависит от показателя цикла (переменная i) и не изменяется в цикле. Добавим в код переменную increment ( приращение ) и перепишем цикл следующим образом:
increment:= BaseValue Ý DELTA;
for i:=0 to Count-1 do begin
value:= (i+1) Ý increment;
. ..
end;
· Заменяйте умножение сложением
В рассмотренном выше примере переменная value на каждом шаге цикла увеличивается на значение переменной increment, поэтомуцикл можно организовать так:
increment:= BaseValue Ý DELTA;
value:=0;
for i:=0 to Count-1 do begin
value:= value + increment; // Сравните с первоначальным вариантом!
. ..
end;
· Используйте «размыкание» цикла
Вам необходимо выполнять в цикле похожие действия, которые отличаются небольшой частью, которая выполняется только один раз в начале цикла:
for i:=1 to Count do begin
if i = 1 then begin
{операторы 1}
End
Else begin
{операторы 2}






