Разработчик каждого модуля должен выбрать некоторое подмножество свойств модуля в
качестве официальной информации о модуле, доступной авторам клиентских модулей.
Применение этого правила означает, что каждый модуль известен всем остальным (то есть раз-
работчикам других модулей) через некоторое официальное описание, или так называемые общедо-
ступные (public) свойства.
В основе правила скрытия информации лежит критерий непрерывности. Предположим, что в неко-
тором модуле происходят изменения, касающиеся лишь его скрытых элементов и не затрагивающие
общедоступных свойств; тогда на другие обращающиеся к нему модули, называемые его клиентами,
эти изменения не подействуют. Чем меньше общедоступная часть, тем больше шансов на то, что
изменения в модуле будут содержаться в его скрытой части.
Правило скрытия информации придает особое значение отделению описания функции от ее реали-
зации, - что делает функция и как она это делает - разные вещи. Помимо критерия непрерывности,
это правило связано также с критериями декомпозиции, композиции и понятности. Нельзя незави-
симо разрабатывать модули системы, комбинировать существующие модули или понимать действие
отдельных модулей, если неизвестно в точности, что каждый из них может (или не может) ожидать
от других модулей.
Какие же из свойств модуля должны быть общедоступными, а какие - скрытыми? Как правило, в
общедоступную часть следует включать функциональность, заданную спецификацией модуля, а все,
что связано с реализацией этих функциональных возможностей, должно быть скрыто, предохраняя
другие модули от последующих изменений реализации программы.
Однако эта рекомендация является нечеткой, так как не дано определение спецификации (specification)
и реализации (implementation). Действительно, можно поддаться искушению, изменив определение
на прямо противоположное, и утверждать, что спецификация состоит из общедоступных свойств
модуля, а реализация - из его скрытых свойств! ОО-подход обеспечит намного более точные реко-
мендации на основе теории абстрактных типов данных.