четверг, 25 июля 2024 г.

Принцип имён в API: если объект не указан явно, то действие относится к исходному объекту

Это перевод API naming principle: If there is no direct object, then the direct object is the source object. Автор: Реймонд Чен.

Обычно имена методов начинаются с глагола: widget.Toggle, widget.SetColor, widget.GetAssociatedDoodad.

Часто за глаголом следует объект: widget.SetColor, widget.GetAssociatedDoodad. Такой объект, указываемый явно — это то, над чем глагол работает, или что он создает. В примере выше: SetColor устанавливает (set) цвет (color), а GetAssociatedDoodad возвращает (get) ассоциированный doodad (associated doodad).

Иногда за глаголом вообще не следует название объекта. Например, метод widget.Toggle выше. В этом случае объект указывается неявно: это исходный объект. В приведенном выше примере widget.Toggle переключает (toggle) виджет (widget).

Всё это может показаться очевидным, но этот принцип легко упустить из виду.

Например, одна команда разработчиков предложила создать API с объектом WidgetNotification и методом widgetNotification.Delete. Если трактовать это предложение, как было указано выше, то можно подумать, что предложенный метод удалит сам объект уведомления виджета, но они хотели, чтобы этот метод удалял бы прослушиватель (listener) уведомлений. По правилам выше, методы для создания и удаления прослушивателей должны быть названы как-то вроде widgetNotification.CreateListener и widgetNotification.DeleteListener.

В качестве другого примера: имя метода ApplicationDataManager.CreateForPackageFamily не говорит о том, что именно он создаёт, поэтому можно решить, что он создаёт ApplicationDataManager. Но это не так. На самом деле, он создаёт объект ApplicationData. Более правильное название для такого метода могло бы быть ApplicationDataManager.CreateDataForPackageFamily.

Исключением из этого правила являются фабрики объектов. Целью объектов-фабрик является создание других объектов, поэтому предполагается, что метод WidgetFactory.Create создаст widget. Но я не стану жаловаться, если бы вы назвали свой метод WidgetFactory.CreateWidget, просто чтобы внести ясность.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.

Примечание. Отправлять комментарии могут только участники этого блога.