Способ мышления-Форт

       

Модульность


Существенное движение вперед произошло с внедрением "структурированного программирования", методологии, основанной на том, что, как показал опыт, большие задачи проще решаются, если рассматривать их как совокупность меньших задач [1]. Каждый такой кусочек называется `модулем`. Программы состоят из модулей внутри других модулей.

Структурированное программирование подавляет кашеобразность кода, поскольку процессы переходов прослеживаются только в пределах модуля. Нельзя перепрыгнуть из середины одного модуля в середину другого.

Например, на рис.1-2 показана блок-схема модуля под названием "приготовление завтрака", который состоит из четырех подмодулей. Внутри каждого подмодуля можно найти новый уровень сложности, которую вовсе не нужно показывать на нашем уровне.

Рис.1-2. Проект структурированной программы.

Приготовление завтрака | +------------------------|------------------------+ | +-----------+----------+ | | | Решение: Вы спешите? | | | +----------------------+ | | / \ | | да нет | | +-----------/--------------+ +--\-----------+ | | | Остановиться на холодной | | Сварить яйца | | | | овсянке | | | | | +-------------------\------+ +--/-----------+ | | \ / | | +-\---------/---+ | | | Вымыть посуду | | | +-------|-------+ | +-----------------------------|-------------------+ |

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

Структурированное программирование имеет три преимущества:

  • Каждая программа представляется линейной последовательностью содержательных функций, называемых `модулями`. Каждый модуль имеет ровно один вход и ровно один выход.
  • Каждый модуль состоит из одной или нескольких функций, каждая из которых имеет также ровно один вход и ровно один выход и сама может рассматриваться как модуль.
  • Модуль может содержать:

    1. операции или другие модули;
    2. структуры принятия решений (выражения типа ЕСЛИ ТО);
    3. структуры для организации циклов.


    Смысл модулей, имеющих "один вход, один выход", состоит в том, что Вы можете вынуть их, изменить их начинку и вставить обратно без развинчивания остальных соединений в программе. Это означает, что Вы можете попробовать каждый кусок по отдельности. Такое возможно когда Вы точно знаете что имеется при входе в модуль и что наблюдается после выхода из него.

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

    Структурированное программирование было изначально задумано как подход к проектированию. Модули были воображаемыми обектами, которые существовали в голове программиста или разработчика и не были частями реального кода. Когда техника структурированного программирования применяется к неструктурированным языкам типа Бейсика, результат получается похожим на то, что показано на рис.1-3.

    Рис.1-3. Структурированное программирование на неструктурированном языке.

    10 ИНСТРУКЦИЯ 20 ИНСТРУКЦИЯ ' Решить - спешим? 30 ЕСЛИ Н=ВЕРНО ТО ПЕРЕЙТИ К 80 ' если да, то на 80 40 ИНСТРУКЦИЯ 50 ИНСТРУКЦИЯ ' Варка яиц 60 ИНСТРУКЦИЯ 70 ПЕРЕЙТИ К 110 ' на 110 80 ИНСТРУКЦИЯ 90 ИНСТРУКЦИЯ ' Приготовление овсянки 100 ИНСТРУКЦИЯ 110 ИНСТРУКЦИЯ ' Мытье посуды 120 ИНСТРУКЦИЯ


    Содержание раздела