Как конвейер анимации и разработчик инструментов, я называю вещи; много вещей. На сегодняшний день я назвал бесчисленное количество переменных, тысячи функций и классов, сотни производственных активов, десятки инструментов, два конвейера и одну компанию. Я увлечен номенклатурой и стараюсь уделять каждому имени должное внимание. Несмотря на это — а может быть, благодаря — я сожалею о многих из них. Я выбрал имена, которые были проигнорированы пользовательской базой в пользу других прозвищ. У меня были случаи, когда имена становились ужасно неточными после рефакторинга. Я выбрал имена, которые никто не знал, как произносить. Однажды я потратил часы на отладку отсутствующей тени только для того, чтобы, наконец, понять, что я неправильно написал имя источника света как «dummmyLight».

Есть что-то волшебное в именах. Приписывание слова вещи привязывает ее к реальности. Пожалуй, мой любимый пример — дежа вю. Это эфемерный и преходящий опыт, но поскольку у него есть имя, мы легко идентифицируем его, когда он происходит. Если вы не знакомы с лингвистической относительностью (также известной как гипотеза Сепира-Уорфа), посмотрите уже Прибытие.

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

Ладно, хватит философской чепухи. Чему я научился на всех этих ошибках? Чтобы не превратить эту статью в наживку, вот ненумерованный список советов, которые помогут вам назвать вашу работу. Эти советы предназначены для разработчиков, пишущих код и инструменты разработки, но большинство из них применимы в общем случае.¹

Используйте устоявшуюся терминологию

У большинства вещей уже есть имя. Если вы были взволнованы, чтобы пойти назвать все, извините, что лопнул ваш пузырь. Ради бога, не придумывайте новое имя тому, что уже имеет устоявшееся прозвище. Для тех, кто работает в индустрии анимации, вот несколько ссылок, которые помогут вам начать работу:
Глоссарий терминов кино
Термины анимации

В том же духе изучите свои структуры данных и применяйте их имена, когда это уместно. Простой пример: двухмерное представление ресурсов будет представлять собой AssetTable, а иерархическое представление будет представлять собой AssetTree. Вместо A* в этой кроличьей норе я просто оставлю это здесь:
Структуры данных

Использовать Тезаурус

Иногда вы обнаружите, что ваша терминология немного неверна. В этом случае попробуйте взломать тезаурус, чтобы найти термины, наиболее близкие по смыслу к тому, что вы описываете. Является ли этот набор вещей «сборкой», «партией», «связкой» или «собранием»? … может быть, не последний.

Используйте пространства имен и будьте краткими

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

Избегайте конфликтов и перегрузки

При выборе имен для кода обязательно избегайте коллизий. Кроме того, следует учитывать и другие потенциальные столкновения. Например, если определенные термины используются в качестве токенов файловой системы, будут ли они конфликтовать с другими токенами файловой системы?

Если вы создаете инструмент командной строки, имя используется командой, установленной сейчас или в будущем? Доступен ли короткий логический псевдоним? Будут ли эти имена хорошо работать с завершением табуляции?

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

Соответствие между кодом и интерфейсом

Когда ваш код выставляется внешнему миру в виде GUI, CLI, API или хотя бы документации, используйте ту же номенклатуру в тех интерфейсах, которые вы установили в коде. Если вы обнаружите, что номенклатура в коде плохо переводится на понятный человеку язык интерфейса, это хороший знак, который следует пересмотреть. Это поможет будущим разработчикам (включая вас) работать в обратном направлении от интерфейса, чтобы понять код.

Избегайте каламбуров и шуток

Это будут имена, которые превратятся в неприятные прозвища, когда программное обеспечение выйдет из строя. Оставьте этот домен малым предприятиям, таким как Back to the Futon и Pane in the Glass. Такой умный. Конечно, это может увеличить посещаемость этого нового ресторана, но в основном это привлекает стоны коллег, за которыми следует хроническая амнезия в отношении того, к чему в первую очередь относится название.

Рассмотрите будущие функции

Будущие изменения в вашем программном обеспечении могут дать ему новую цель или новых пользователей. Если вы являетесь автором замечательного нового инструмента, который создает сцены для освещения, вы можете назвать его «Lighting Scene Builder» — отличное и серьезное название. Теперь предположим, что после нескольких небольших обновлений анимация также может использовать его для построения своихсцен. Если вы использовали слово «освещение» в своем коде, у вас есть проблема.

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

Получите стороннее мнение

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

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

Знайте свои типы имен

Это помогает мне думать об именах в следующей таксономии мета-имен.

Описание: 3d Studio Max, Adobe Character Animator
Расскажите, как есть. Для разработчиков, конечно, большинство ваших имен должно попасть сюда.

Правильно: Maya, Houdini, Arnold, Jenkins
Это имена без обозначения. Тем не менее, обратите внимание, что примеры имеют сильную коннотацию, чтобы сформировать у вас представление о характеристиках программного обеспечения.

Слова: Substance, Nuke, Shotgun, Blender
Это названия знакомых слов с денотатом. Они могут быть эффективными для передачи функции программного обеспечения и, как правило, кратки. Я также учитываю орфографические искажения в этой группе.

Акронимы и сокращения: Gimp, OSL, SVN, OIIO
Я не буду оскорблять вас, объясняя, что такое акроним.²

Портманто: MySql, RenderMan, BitBucket
Это имена, образованные путем объединения двух других слов в одно новое слово. Они не всегда поддаются произношению, но обратите внимание, что простое смешивание двух слов вместе превращает их во что-то новое.

Resurrected & Foreign: Alembic, Atelier, Krita
Это имена из родных или иностранных слов, незнакомых пользователям. Этот маршрут дает вам больше свободы выбора имени, приятного на слух. Просто будьте осторожны, чтобы люди знали, как это произносится.

Чепуха: waf, git, Nvidia
Когда ничего не помогает, придумай что-нибудь. Это имеет то преимущество, что позволяет избежать всех столкновений и может быть довольно коротким. Я имею в виду, откуда еще берутся слова.

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

¹ Не используйте эти советы для именования детей.
² Акронимы – это аббревиатуры, образованные из начальных букв других слов и произносимые как слово.
³ Если вы троглодит, извините за разжигание ненависти.
Бонусная сноска