Donc, je suis plongée plus profonde et plus profonde en Clojure.Spec.
Une chose que je suis tombé sur est, où mettre mes spécifications. Je vois trois options:
Mondial Dans Le Fichier De Spécification
Dans la plupart des exemples, j'ai trouvé en ligne, il y a un gros spec.clj
le fichier, qui est requis dans l'espace principal. Il a tout l' (s/def)
et (s/fdef)
pour tous les "types de données" et les fonctions.
Pro:
- Un fichier pour les gouverner tous
Contra:
- Ce fichier peut être d'un grand
- Seul Responsibliy Principe violé?
Spécifications de la production d'espaces de noms
Vous pourriez mettre votre (s/def)
et (s/fdef)
droite à côté de votre code de production. De sorte que, la mise en œuvre et le spec co-exister dans le même espace de noms.
Pro:
- la co-localisation de la mise en œuvre et spec
- un espace de noms est un sujet de préoccupation?
Contra:
- le code de production pourrait être gênant
- un espace de deux préoccupations?
Dédié spec de la structure de l'espace de noms
Puis j'ai pensé, peut-être que les Specs sont un troisième type de code (à côté de la production et de test). Alors peut-être qu'ils méritent leur propre structure d'espaces de noms, comme ceci:
├─ src
│ └─ package
│ ├─ a.clj
│ └─ b.clj
├─ test
│ └─ package
│ ├─ a_test.clj
│ └─ b_test.clj
└─ spec
└─ package
├─ a_spec.clj
└─ b_spec.clj
Pro:
- dédié (mais relative) des espaces pour les specs
Contra:
- vous avez à la source et exigent la bonne espaces de noms
Qui a de l'expérience avec l'une des approches?
Est-il une autre option?
Que pensez-vous des différentes options?