Advertisement
the0938

Untitled

Sep 10th, 2021
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. Ладно. Пришло таки время поговорить за нейминг, чувствую.
  2.  
  3. ## Типы названий
  4.  
  5. Глобально имена можно разделить на две группы:
  6.  
  7. - Названия субъекта / объекта;
  8. - Название действия.
  9.  
  10. Начну со второго, поскольку его проще объяснить.
  11.  
  12. ## Действия
  13.  
  14. В коде им соответствуют: методы, функции, действия Redux, действия Mobx и тому подобное.
  15.  
  16. Действие, по сути - это приказ компьютеру на английском языке: "get a value from the local storage", "save something to a file system", "do a barrel roll". Все эти приказы легко превратить в название действий: `getValueFromLocalStorage`, `saveSomethingToFileSystem`, `doBarrelRoll` - я просто убрал из фраз артикли.
  17.  
  18. Разберём их подробнее. Помимо, непосредственно, _глагола_ (сделать что?), они содержат _объект_ (сделать с чем / над чем?) и _обстоятельства_ (сделать как?).
  19.  
  20. ### Глагол
  21.  
  22. Любой приказ без глагола не имеет смысла. Единственное, о чём тут стоит поговорить, так это о выборе нужного глагола. В программировании сложились традиция использовать специфические глаголы для определённых команд:
  23.  
  24. * `get` - получить (взять) значение откуда-то. Если мы используем это слово, то подразумевается - раз, - что операция будет очень быстрой, - два, - синхронной, и - три, - относительно чистой (то есть, изменять других значений она не будет). Если нарушается любое из трёх условий, лучше использовать другое слово. Например, операция долгая - `calculate`, `generate`, `compute`, `find` (зависит от контекста задачи). Асинхронная - `fetch`, `request`, `read`, `load`. Затрагивает другие значения - `pop`, `pull` и тому подобное.
  25.  
  26. * `set` - записать значение куда-то. Тут, опять же, подразумевается предыдущие три пунтка. Быстро, синхронно, и не затрагивает ничего, кроме атрибута, указанного в названии (а в случае функционального программирования вообще возвращает обновлённую копию сущности). Если операция долгая, то можно использовать `save` или `write`. Если асинхронная - `send` или `put`. Если обновляет кучу атрибутов - `update`, `change`, `assign`.
  27.  
  28. * `read / save` - обычно используются для чтения и записи в некое хранилище - файловую систему, Cookie, Local Storage, к примеру.
  29.  
  30. * `read / write` - так сложилось, что эта пара используется только для доступа к файловой системе.
  31.  
  32. * `fetch / send (submit)` - а с помощью этой пары мы традиционно общаемся по сети.
  33.  
  34. * `handle` - обрабатываем некое событие (или, к примеру, таймаут - `handleTimeout`).
  35.  
  36. * `push / pull` - так мы общаемся сообщениями по каналу данных (WebSocket, например), либо работаем со структурой данных "куча" ("heap").
  37.  
  38. * `push / pop` - работа со стеком. И так далее.
  39.  
  40. Выписывать все возможные шаблоны очень долго, да и не вспомнить все сразу. Единственный совет, который тут можно дать - смотрите на API крупных и старых продуктов.
  41.  
  42. ### Объект
  43.  
  44.  
  45.  
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement