УМП Технологические подходы к разработке ПО 127
Извлечение из текста (или из множества текстов) списка имен с фильтрацией и/или сорти-
ровкой и/или группировкой. Такая операция полезна, например, при анализе использова-
ния стандартных библиотек.
Систематическое переименование (с возможной фильтрацией). Например, потребность в
систематическом переименовании (с заменой и перестановкой частей идентификаторов)
возникает при использовании в качестве образца фрагмента кода, составленного с приме-
нением другой дисциплины имен.
Известен целый ряд хорошо проработанных дисциплин имен, из которых чаще всего упо-
минается так называемая венгерская нотация. Фактически это название объединяет мно-
жество сходных дисциплин, в основе которых лежит следующая идея. Идентификатору
(как слову) приписывается некоторая искусственная морфология. Как правило, идентифи-
катор предлагается делить на следующие части: префикс, приставка, корень, суффикс и
окончание.
98
Далее определяется, какую характеристику идентификатора отражает каждая
его часть. Как правило, в диалектах венгерской нотации корень должен отражать семан-
тику, приставка – тип, суффикс – прагматику, префикс – специальные характеристики.
Окончание используется для индивидуализации имен, которые по всем остальных при-
знакам совпадают. Например, следуя венгерской нотации, переменные для хранения ве-
щественных корней квадратного уравнения в процедуре Visual Basic можно было бы на-
звать dblRoot_1 и dblRoot_2 (здесь dbl – это приставка, задающая тип, Root – это корень, а
_1 и _2 – окончания; префикс и суффикс не использованы). Кроме того, в конкретной
дисциплине имен регламентируются (часто в виде предопределенных списков) наборы
возможных значений кодовых частей (таких как префикс и приставка), определяются пра-
вила (неформальные) выбора корней, суффиксов и окончаний, а также правила, по кото-
рым можно опускать те или иные части идентификатора. Для многих языков и систем
программирования имеются детальные описания конкретных диалектов венгерской нота-
ции. Венгерская нотация является неплохой дисциплиной имен и ее можно рекомендовать
к использованию, особенно в следующих обстоятельствах:
венгерская нотация уже строго описана (имеется стандарт) для данного языка и системы
программирования;
проект предусматривает передачу кода и заказчик не возражает против данной дисципли-
ны имен;
в проекте повторно используется большой объем кода, написанного в венгерской нотации.
В то же время, следует иметь в виду, что венгерская нотация
не отражает структурную позицию имени,
затрудняет выполнение систематического переименования,
требует согласования с системой типов языка программирования.
Выбор между готовой дисциплиной имен и разработкой собственной (часто путем усече-
ния лишнего) является прерогативой руководителя проекта.
Замечание
Поскольку при моделировании и кодировании используются, как правило, разные системы
программирования, то маловероятно, что они все окажутся локализованными, причем с оди-
наковым пониманием особенностей русского языка. Отсюда следует, что идентификаторы,
как правило, приходится записывать, используя буквы латинского алфавита. Для условных
(кодовых) частей идентификаторов это не важно и даже удобно: иероглиф не должен быть
похож на слово.
99
Но для содержательных (семантических) частей желательно, чтобы они
являлись узнаваемыми словами или словосочетаниями. Использование транслитерирован-
98
Здесь указаны русские названия частей слова. В буквальных переводах иноязычных описаний диалектов венгерской
нотации можно встретить различные "тэги", "квалификаторы" и пр. Суть от этого не меняется.
99
Локализованные версии языков программирования не популярны. Язык программирования далек от естественного и
не должен быть к нему близок. Служебные слова языка программирования – это иероглифы, а не слова из букв. Иерог-
лифы легче выучить и использовать, если они ни на что не похожи.