Как стать автором
Обновить

Имена или семантика классов в программировании

Время на прочтение 2 мин
Количество просмотров 13K
1. При программировании на придумывание имен может уходить ощутимо много времени. Казалось бы, такая маловажная вещь, как имя. И вот только сегодня я осознал, почему я трачу на это время, и почему, в итоге, это не напрасная трата времени.

Придумывание имени для модели, класса (предметной области) — важно и при проектировании, и при кодировании. Ведь имя несет с собой огромное облако ассоциаций из реальной жизни, из других областей.

Выбор имени — это один из этапов проектирования, когда какие-то сложные вещи — операции, объекты, отношения, скрываются уровнем абстракции. То есть скрываются за назначенным именем.

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

Как вы яхту назовете, так она и поплывет.

2. Свежий личный пример. Пишу код для запуска предустановленных виртуальных машин у различных облачных провайдеров. Сначала у меня получилось, что моделью, то есть объектом, который юзер настраивает и создает пошаговой формой, в которой потом хранятся результаты установки, и с которой пользователь потом может выполнять другие действия, сначала стала Instance — экземпляр виртуальной машины. Такое название тянуло за собой лишние для этой задачи свойства — хранить историю изменения состояний, отслеживать актуальное состояние инстанса у провайдера и показывать его в юзерской панели. Их можно было не реализовывать, но они все-время маячат на фоне, т.к. это общепринятое поведение инстансов. В то время как исходная задача очень простая и минимальная — запустить инстанс, установить и настроить на нем софт, и выдать пользователю результат.

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

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

3. Продумывание имени — это непосредственная часть проектирования. И если вы не можете подобрать удачное слово и чувствуете неудовлетворенность, то скорее всего вы либо плохо продумали модель и она не реализует то, чем вы ее назвали, либо плохо продумали эту часть проекта и нужна вообще другая модель.

Время, потраченное на выбор имени, тратится не зря. Его можно воспринимать как самое ранее тестирование модели — некий интеграционный тест, проверяющий, правильно ли разработчик представляет задачу.
Теги:
Хабы:
+3
Комментарии 41
Комментарии Комментарии 41

Публикации

Истории

Работа

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн