Principes Fondamentaux
1. Structure de Base
2. Gestion des Relations
2.1 Relations Simples3. Entités Enrichies
Pour gérer les différents niveaux de chargement des relations, nous utilisons des classes distinctes :4. Value Objects
Pour les concepts qui n’ont pas d’identité propre, nous utilisons des Value Objects :5. Validation
La validation se fait à plusieurs niveaux :- Dans les setters pour les validations simples
- Dans le constructeur pour les invariants de base
- Dans des méthodes privées pour les validations complexes
Bonnes Pratiques
1
Immutabilité
• Utiliser
readonly pour les propriétés qui ne doivent pas changer• Retourner des copies des collections dans les getters2
Encapsulation
• Toutes les propriétés sont privées• Accès via getters/setters• Validation dans les setters
3
Relations
• Distinguer clairement les relations chargées/non chargées• Utiliser des classes distinctes pour les différents niveaux de chargement• Encapsuler les collections dans des Value Objects
4
Validation
• Valider dans les setters• Valider dans le constructeur• Utiliser des exceptions de domaine
5
Documentation
• Documenter les invariants• Documenter les validations• Documenter les relations