Каковы соглашения о присвоении имен Clojure? - PullRequest
51 голосов
/ 15 июля 2011

Может кто-нибудь объяснить или указать мне, где я могу найти соглашения о присвоении имен clojure для:

  1. Имена файлов
  2. Функции (Насколько я понимаю, имена функций - это просто значения, разделенные тире)
  3. Переменные

Ответы [ 5 ]

47 голосов
/ 15 июля 2011

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

К вашим конкретным точкам:

  1. Имена файлов строчные и хранятся в структуре каталогов, соответствующих пространству имен, и заканчиваются на .clj, например. «Мой / специальный / namespace.clj
  2. Функции - это слова, разделенные дефисом, строчными буквами, которые в идеале должны быть описательными, чтобы ваш код был четким и самодокументируемым. Не бойтесь повторно использовать хорошие имена функций в разных пространствах имен (для этого и нужны пространства имен!).
  3. Переменные (под которыми я предполагаю, что вы имеете в виду параметры, переменные с привязкой и т. Д.) Также обычно являются разделенными дефисом строчными словами. Поскольку код-это-данные, я думаю, что уместно, чтобы функции и данные имели одинаковое соглашение об именах: -)
9 голосов
/ 01 декабря 2013

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

8 голосов
/ 16 марта 2016

Есть несколько интересных рекомендаций по именованию, написанных Стюартом Сьеррой , которые предполагают, что:

  • Чистые функции должны быть существительными, описывающими возвращаемое значение (age вместо calculate-age)
  • побочными функциями должны быть глаголы, описывающие действие (create- для конструирования и get- для извлечения), резервирование взрыва swap! изменения в изменяемых ссылках.
  • глаголыкоторые также могут быть существительными, должны различаться как глагольные фразы (send-message вместо message)
  • Принуждения должны давать имя выходному типу без префикса стрелки (connection вместо ->connection), кроме случаев, когдатип ввода должен быть явным (input-type->output-type)
  • псевдонимы пространства имен могут сэкономить при повторении (products/price вместо products/product-price) и предотвратить локальные конфликты в привязках let
  • функции, возвращающие функции должны иметьсуффикс -fn
1 голос
/ 17 января 2018

Существует интересный набор соглашений об именах, задокументированный в комментарии Таоэнссо в его Encore library .

Он предлагает имена, используя ! для побочных эффектов, ? длялогические значения, $ для дорогостоящих операций, _ для разыменования, * для макросов;плюс несколько других комбо.

0 голосов
/ 15 июля 2011

Даже если вы не просили об этом явно, я объясню, что я видел для соглашений по именованию протоколов.

Как правило, имя начинается с заглавной буквы "I", а остальное - регистр верблюдов, где первая буква каждого слова написана заглавными буквами, а остальные строчными. Например, я хочу определить протокол для ракетных кораблей, я бы использовал имя IRocketShip

Я также видел «А» вместо «Я», вероятно, для обозначения слова «абстрактный».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...