Технологии программирования
Шрифт:
Размещенный в отдельном файле набор связанных процедур вместе с данными, которые они обрабатывают, называют программной единицей (Unit). Часто слово «Unit» переводят как модуль. Так возник термин «модульное программирование». В модульном программировании акцент сместился от проектирования процедур в сторону организации данных. Помимо прочего, это явилось отражением факта увеличения размеров программ. Парадигма: реши, какие требуются модули; разбей программу так, чтобы скрыть данные в модулях.
В объектно-ориентированном программировании абстракция данных является фундаментальным аспектом качественного проектирования. Парадигма:
1.11. МНЕМОНИКА ИМЕН В ПРОГРАММАХ
Предлагаемая здесь методика составления имен (идентификаторов) носит рекомендательный характер. Для использования этой методики в конкретном проекте необходима ее адаптация. Составленные в соответствии с методикой имена можно использовать в программах для именования констант, переменных, типов, процедур, объектов, файлов и т. д. После адаптационной переработки методика может стать составной частью стандарта проекта. Имена, используемые в программных продуктах, должны:
— соответствовать назначению (из имени должно однозначно следовать его назначение и, наоборот, из назначения — его имя);
— обладать узнаваемостью (это свойство имени позволяет улучшить читаемость исходных текстов программ);
— обеспечивать запоминаемость (имя необходимо легко запомнить для того, чтобы каждый раз не возвращаться к документации или к тексту программы, в котором это имя определено);
— быть краткими (слишком длинные имена не запоминаемы и, несмотря на повышенную узнаваемость по сравнению с короткими именами, усложняют чтение исходного текста программы);
— обладать уникальностью (как следствие, «соответствовать назначению»: имена должны составляться таким образом, чтобы во всей системе не было двух одинаковых глобальных имен).
Конечно, хотелось бы добиться одновременного выполнения всех изложенных выше требований в совокупности, но, поскольку требование краткости противоречит требованию «обладать узнаваемостью», а иногда и «обеспечивать запоминаемость», необходимо находить оптимальный компромисс в соблюдении всех требований.
В идеальном случае имена не следует запоминать: их нужно составлять таким образом, чтобы каждый раз, зная, для которого объекта составляете имя, вы приходили бы к одному и тому же варианту имени.
Текст данных рекомендаций не лимитирует использование прописных и строчных букв, способ разделения слов и то, какие слова использовать в именах, — дополнительные ограничения налагает конкретный язык программирования. Также не рассматривается пригодный для конкретного языка программирования символ разделителя слов.
Имена констант и переменных относятся к данным, а имена данных образуются от имен существительных. Имена процедур должны быть активными, т. е. базироваться на активном глаголе, за которым следует существительное. Имена объектов обычно образуются от имен существительных, но в редких случаях могут включать глаголы и имена прилагательные.
Итак, имя состоит из слов. Пусть длина имени — это количество слов, использованных в этом имени. Имя А является родительским по отношению к имени Б, если длина имени Б больше, чем длина имени А, и первые (слева) слова имени Б совпадают со словами имени А в том же порядке. Имя А можно рассматривать как общий префикс для имен группы Б. Например, имя debug является родительским для имен debug_info, debug_mode, debug_log, debug_error_get, debug_error_set и т. п. Имя debug_error, в свою очередь, является родительским для debug_error_get, debug_error_set.
Имя А является дочерним по отношению к имени Б, если имя Б является родительским по отношению к имени А.
Имена принадлежат одной группе, если эти имена имеют одинаковую длину и одного общего предка А. Длина имени А на единицу меньше длины имен этой группы. В таком случае А будет являться именем этой группы. Например, имена debug_error_get, debug_error_set являются именами группы debug_error. Имена debug__info, debug_mode, debug_log и debug_error, в свою очередь, являются именами группы debug.
Пусть мощность группы А — общее количество имен в этой группе. Префикс имени — это слово, которое записывается самым первым в имени и не учитывается при определении длины, родства и принадлежности группе. Префиксы используют, например, для указания типов переменных или полей: i_count, b_valid, is_protected. i, b, is — префиксы.
Требования иерархической организации имен могут частично нарушаться или вообще не использоваться при составлении локальных имен (имен для локальных переменных, имен полей таблиц, имен свойств и методов объектов и т. п.). Однако в случае, если локальных имен много, имеет смысл применять эти требования и к локальным именам.
Если имя А является дочерним по отношению к имени Б, то имя Б является обозначением некоторого объекта. Это означает, что все слова имени, кроме последнего имени, могут быть образованы только именами существительными. Только самое последнее слово в имени может быть существительным, глаголом или прилагательным. Это правило, однако, может иногда нарушаться. Например, есть некоторое действие и набор глобальных настроек (констант), которые контролируют это действие. В таком случае в именах этих констант предпоследним словом будет глагол.