О компании
 
Услуги
 
Портфолио
 
Контакты
Русский   English  
Компания «КОИНС» - Наши технологии - Иерархическая организация имён

Иерархическая организация имён

Иерархическая организация имён -- Способ описания иерархических объектов в неиерархических средах

Содержание

Немного о том, откуда возникла идея иерархической организации имён
Здесь - по существу, что такое иерархическая организация имен?
Здесь о требованиях к свойствам имён (соответствие назначению, понятность, запоминаемость, краткость и уникальность), о том, как выбирать слова для обеспечения выполнения этих свойств и наиболее полного использования преимущества иерархической организации и о том, зачем нужен рефракторинг имён
Стандарты кодирования и соглашения об именах разных фирм

Введение

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

Когда вносишь изменения в чужой проект, как-то чувствуешь себя не совсем уверенно, добавляя туда новые имена: а не использовано ли это имя где-нибудь еще. При использовании иерархической организации такой неуверенности не может быть - по имени однозначно определяется не только его назначение, но и место расположения.

Другой вариант, в котором нам может оказаться полезной иерархическая организация имен - это когда мы хотим описать некоторый иерархический объект в неиерархической системе. Сама по себе система не меняется от того, что мы как-то по особенному составляем имена. Но уже в самих именах мы можем задать отношения «родитель» - «потомок», описав таким образом иерархические отношения между соответствующими объектами.

Большинство систем программирования, если в них не использовать объектное программирование, являются как раз такими неиерархическими средами: глобальные имена в них рассматриваются как линейный список и не подчинены никакой иерархии.

Не нужно акцентировать внимание на «если не использовать ООП» и говорить, что иерархическая организация имен не нужна, потому что можно использовать ООП. Во-первых, иерархическая организация имен применяется для составления имен не только в программах, но для описания любых иерархических объектов в неиерархических средах. Во-вторых, ООП не всегда доступно и не всегда оправдано. Почему, например API практически любой по размеру системы - это практически всегда линейный набор функций? Нет сомнений, что внутри большие системы пишутся с использованием ООП, но снаружи это - линейный набор функций. В-третьих, даже с использованием ООП легко могут возникнуть объекты с огромным количеством методов и свойств. Внутри одного объекта мы все равно получаем неиерархический линейный список.

В терминах способов представления деревьев в базах данных можно было бы сказать, что я использую материализованные пути для представления иерархических объектов.

Можно заметить, что некоторое подобие иерархической организации имен уже используется, например, в интерпретаторе PHP. Например, все функции для работы с базой данных MySQL там называются, начиная с префикса mysql_. Все что сделал я - это сформулировал идею, почему при иерархической организации имен префикс должен быть именно таким, несколько расширил ограничения, предложив способ составления префикса имени в случае, если в имени содержится несколько слов, а так же предложил использовать этот способ организации имен для составления всех имен в программах.

Иерархическая организация имен в программах позволяет составлять такие имена, по которым можно однозначно определить, для чего эти имена предназначены; существует так же и обратная связь - из предназначения можно однозначно определить, каким будет имя. Как одно из следствий мы получаем то свойство, что теперь у нас все имена в программах - заведомо уникальны. Такие имена более понятны и проще запоминаются за счет того, что человеческая память тоже устроена иерархически: человеку проще запомнить детали, когда он понимает всю картину в целом. При иерархической организации имен так и получается, что родительское имя описывает всю картину в целом, а дочерние имена - это детали.

Основные определения

  1. Имя состоит из слов.

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

  2. Уровень имени - это количество слов, использованных в этом имени.

  3. Имя А является родительским по отношению к имени Б, если уровень имени Б больше, чем уровень имени А и первые (слева) слова имени Б совпадают со словами имени А в том же порядке. Например, имя debug является родительским для имен debug_info, debug_mode, debug_log, debug_error_get, debug_error_set и т.п. Имя debug_error, в свою очередь, является родительским для debug_error_get, debug_error_set.

  4. Имя А является дочерним по отношению к имени Б, если имя Б является родительским по отношению к имени А.

  5. Имена принадлежат одной группе имен, если у этих имен есть некоторое общее родительское имя. Это общее родительское имя является именем группы.

    Например, имена debug_error_get, debug_error_set являются именами группы debug_error или группы debug. Имена debug_info, debug_mode, debug_log и debug_error являются именами группы debug.

  6. Мощность группы А - общее количество имен в этой группе.

  7. Префикс имени - это слово, которое записывается самым первым в имени и не учитывается при определении уровня, родства и принадлежности группе. Префиксы используют, например, для указания типов переменных или полей: i_count, b_valid, is_protect. i, b, is - префиксы.

Смотрите также

Стандарты кодирования PEAR:
http://pear.php.net/manual/ru/standards.php

Соглашения об именах Microsoft:
http://msdn.microsoft.com/library/en-us/Axapta/PSTD/PSTD_Naming_conventions.asp

Гид по оформлению кода Object Pascal. Соглашения об именах:
http://edn.embarcadero.com/article/10280#3.0

Программное обеспечение

КОИНС.Ломбард

КОИНС.Маяк

КОИНС.Ювелир

КОИНС.Обменник

Дизайн сайтов

Творческий центр «Каунтерпарт»