Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ладно. Пришло таки время поговорить за нейминг, чувствую.
- ## Типы названий
- Глобально имена можно разделить на две группы:
- - Названия субъекта / объекта;
- - Название действия.
- Начну со второго, поскольку его проще объяснить.
- ## Действия
- В коде им соответствуют: методы, функции, действия Redux, действия Mobx и тому подобное.
- Действие, по сути - это приказ компьютеру на английском языке: "get a value from the local storage", "save something to a file system", "do a barrel roll". Все эти приказы легко превратить в название действий: `getValueFromLocalStorage`, `saveSomethingToFileSystem`, `doBarrelRoll` - я просто убрал из фраз артикли.
- Разберём их подробнее. Помимо, непосредственно, _глагола_ (сделать что?), они содержат _объект_ (сделать с чем / над чем?) и _обстоятельства_ (сделать как?).
- ### Глагол
- Любой приказ без глагола не имеет смысла. Единственное, о чём тут стоит поговорить, так это о выборе нужного глагола. В программировании сложились традиция использовать специфические глаголы для определённых команд:
- * `get` - получить (взять) значение откуда-то. Если мы используем это слово, то подразумевается - раз, - что операция будет очень быстрой, - два, - синхронной, и - три, - относительно чистой (то есть, изменять других значений она не будет). Если нарушается любое из трёх условий, лучше использовать другое слово. Например, операция долгая - `calculate`, `generate`, `compute`, `find` (зависит от контекста задачи). Асинхронная - `fetch`, `request`, `read`, `load`. Затрагивает другие значения - `pop`, `pull` и тому подобное.
- * `set` - записать значение куда-то. Тут, опять же, подразумевается предыдущие три пунтка. Быстро, синхронно, и не затрагивает ничего, кроме атрибута, указанного в названии (а в случае функционального программирования вообще возвращает обновлённую копию сущности). Если операция долгая, то можно использовать `save` или `write`. Если асинхронная - `send` или `put`. Если обновляет кучу атрибутов - `update`, `change`, `assign`.
- * `read / save` - обычно используются для чтения и записи в некое хранилище - файловую систему, Cookie, Local Storage, к примеру.
- * `read / write` - так сложилось, что эта пара используется только для доступа к файловой системе.
- * `fetch / send (submit)` - а с помощью этой пары мы традиционно общаемся по сети.
- * `handle` - обрабатываем некое событие (или, к примеру, таймаут - `handleTimeout`).
- * `push / pull` - так мы общаемся сообщениями по каналу данных (WebSocket, например), либо работаем со структурой данных "куча" ("heap").
- * `push / pop` - работа со стеком. И так далее.
- Выписывать все возможные шаблоны очень долго, да и не вспомнить все сразу. Единственный совет, который тут можно дать - смотрите на API крупных и старых продуктов.
- ### Объект
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement