Советы профессионала

Зачем использовать подпрограммы?

· Самая важная причина – снижение сложности программ.

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

Пример создания подпрограммы

В коде программы в нескольких местах преобразуется значение deviceUnits, выраженное в аппаратных единицах, в число точек points:

points:= deviceUnitsÝ(POINTS_PER_INCH / DeviceUnitsPerInch)

Сконструируем простую функциюDeviceUnitsToPoints, которая вычисляет это выражение:

Function DeviceUnitsToPoints (deviceUnits: integer): integer;

Begin

if DeviceUnitsPerInch<>0 then

DeviceUnitsToPoints:=deviceUnitsÝ( POINTS_PER_INCH /

DeviceUnitsPerInch)

Else

DeviceUnitsToPoints:= 0;

end;

После этого в коде программы все фрагменты вычисления points будут выглядеть так:

points:= DeviceUnitsToPoints (deviceUnits);

Если оставить прежний вариант программы, то в каждом фрагменте пришлось бы вставлять проверку деления на 0.Использование функции потребовало всего5 строчекдля этого!

· Другие важные причины использования подпрограмм:

§ Минимизация размера кода программы

§ Предотвращение дублирования кода

§ Облегчение сопровождение программы

§ Снижение числа ошибок.

Как оценить «длину» подпрограммы?

· Рекомендуемый размер подпрограммы: 50 - 150, 200 операторов

· Используйте для анализа длины цикломатическую сложность МакКейба

Цикломатическая сложность подсчитывает число точек принятия решений в подпрограмме:

a.Начните считать с 1

b.Добавляйте 1 для каждого из ключевых слов: if, while, for, repeat, and, or

c.Добавляйте 1 для каждого варианта case.

Если полученный результат 0..5 – все нормально, 6..10 –возможно следует подумать об упрощении, 10 и более – упрощайте подпрограмму!

 

 

Процедура или функция?

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

Как правильно использовать параметры?

· Передавайте параметры в порядке входные значения – изменяемые значения – выходные значения

· Передавайте переменные состояния или кода ошибки последними

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

· Ограничивайте число параметров примерно семью

· Убедитесь, что фактические параметры соответствуют формальным.

НЕ используйте рекурсию для решения задач, подобных нахождению факториала или чисел Фибоначчи!

Рекурсия – это очень мощный инструмент. Используйте рекурсию для решения задач сортировки, поиска путей, задач с использованием динамических структур данных.