web-dev-qa-db-fra.com

Quelles sont les conventions de nommage de Clojure?

Quelqu'un peut-il expliquer ou m'indiquer où je peux trouver les conventions de nommage de clojure pour:

  1. Noms de fichiers
  2. Fonctions (d'après ce que j'ai compris, les noms de fonctions sont simplement des valeurs séparées par des tirets)
  3. Variables
51
tmore

Vous voudrez peut-être consulter les normes de codage de la bibliothèque Clojure sur le wiki du développeur - c'est probablement la liste la plus complète que j'ai vue.

Pour vos points spécifiques:

  1. Les noms de fichiers sont en minuscules et stockés dans une structure de répertoires correspondant à l'espace de noms, et se terminent par .clj, par exemple. "mon/special/namespace.clj
  2. Les fonctions sont des mots en minuscules séparés par des tirets, idéalement choisis de manière descriptive afin que votre code soit clair et auto-documenté. N'ayez pas peur de réutiliser de bons noms de fonctions dans différents espaces de noms (c'est à quoi servent les espaces de noms!).
  3. Les variables (par lesquelles je suppose que vous entendez des paramètres, des variables let-bound, etc.) sont aussi généralement des mots en minuscules séparés par des tirets. Depuis code-is-data, je pense qu'il est approprié que les fonctions et les données aient la même convention de nommage :-)
47
mikera

Vous voudrez peut-être jeter un oeil à ce guide de style non officiel .

9
omiel

Il existe des directives intéressantes sur les noms écrits par Stuart Sierra qui suggèrent que:

  • les fonctions pures devraient être des noms décrivant la valeur de retour (age au lieu de calculate-age)
  • les fonctions ayant des effets secondaires doivent être des verbes décrivant l'action (create- pour la construction et get- pour la récupération), en réservant les modifications de bang swap! aux références mutables.
  • les verbes qui peuvent aussi être des noms doivent être distingués comme phrases verbales (send-message au lieu de message)
  • les coercions doivent nommer le type de sortie sans préfixe de flèche (connection au lieu de ->connection) sauf lorsque le type d'entrée doit être explicite (input-type->output-type)
  • les alias d'espaces de noms peuvent économiser sur la répétition (products/price au lieu de products/product-price) et empêcher les conflits locaux dans les liaisons let
  • les fonctions retournant des fonctions doivent avoir le suffixe -fn
8
RobinGower

Même si vous ne l'avez pas explicitement demandé, je vais expliquer ce que j'ai vu pour les conventions de dénomination de protocole.

En règle générale, le nom commence par un «I» majuscule, le reste étant constitué d'une casse de chameau, la première lettre de chaque mot étant en majuscule et le reste en minuscule. Par exemple, je veux définir un protocole pour les vaisseaux spatiaux, j'utiliserais le nom IRocketShip

J'ai aussi vu «A» au lieu de «je» utilisé, probablement pour représenter le mot «abstrait».

0
bmillare

Il existe un ensemble intéressant de conventions de nommage documentées dans un commentaire de Taoensso dans sa Encore bibliothèque .

Il propose des noms en utilisant ! pour les effets secondaires, ? pour les booléens, $ pour les opérations coûteuses, _ comme dereffable, * pour les macros; plus quelques autres combos.

0
Micah Elliott