Модульное программирование - это организация программы как совокупности небольших независимых блоков, модулей, структура и поведение которых подчиняется определенным правилам. Следует заметить, что понятие «модуль» не совпадает в данном случае с понятием «модуль» (unit в смысле «библиотека») языка Паскаль. Это должна быть простая, замкнутая (независимая) программная единица (процедура или функция), обозримая, реализующая только одну функцию. Для написания одного модуля должно быть достаточно минимальных знаний о тексте других, как вызывающих, так и вызываемых.
Программа, разработанная в соответствии с принципами структурного программирования, должна удовлетворять следующим требованиям:
· программа должна разделяться на независимые части, называемые модулями;
· модуль - это независимый блок, код (текст) которого физически и логически отделен от кода других модулей;
· модуль выполняет только одну логическую функцию, иначе говоря, должен решать самостоятельную задачу своего уровня по принципу: один программный модуль - одна функция;
· работа программного модуля не должна зависеть:
Þ от входных данных;
Þ от того, какому программному модулю предназначены его выходные данные;
Þ от предыстории вызовов программного модуля;
· размер программного модуля желательно ограничивать одной-двумя страницами исходного листинга (50-100 строк исходного кода);
· модуль должен иметь только одну входную и одну выходную точку;
· взаимосвязи между модулями устанавливаются по иерархической структуре;
· каждый модуль должен начинаться с комментария, объясняющего его назначение, назначение переменных, передаваемых в модуль и из него, модулей, которые его вызывают, и модулей, которые вызываются из него;
· при создании модуля можно использовать только стандартные управляющие конструкции: выбор, цикл, блок (последовательность операторов);
· оператор безусловного перехода или вообще не используется в модуле, или применяется в исключительных случаях только для перехода на выходную точку модуля;
· в тексте модуля необходимо использовать комментарии, в особенности в сложных местах алгоритма;
· идентификаторы переменных и модулей должны быть смысловыми, «говорящими»;
· в одной строке стоит записывать не более одного оператора. Если для записи оператора требуется больше, чем одна строка, то все последующие операторы записываются с отступами;
· желательно не допускать вложенности операторов IF более, чем трех уровней;
· следует избегать использования языковых конструкций с неочевидной семантикой и программистских «трюков».
В заключение следует напомнить, что все эти вместе взятые меры направлены на повышение качества разрабатываемого программного обеспечения.