class Book {
String title
}
Guide de style de codage pour le développement d’applications Grails
Voici quelques lignes directrices qui devraient faciliter la maintenance de l’application :
-
Modificateurs de méthode :
-
Utilisez des modificateurs protected, private et final pour les méthodes d’un contrôleur qui ne sont pas des actions.
-
-
Style de codage :
-
Donnez la priorité au code concis, tout en préservant la clarté.
-
Utilisez les annotations
@GrailsCompileStatic
ou@CompileStatic
dans toute la base de code.
-
-
Actions sans état :
-
Concevez toujours les actions de manière à ce qu’elles soient sans état et évitez d’utiliser des sessions.
-
-
Traits du contrôleur :
-
Évitez d’utiliser des services pour implémenter les traits du contrôleur.
-
-
Annotation @Transactional :
-
Réservez l’annotation @Transactional uniquement aux actions du contrôleur.
-
-
Règles générales :
-
Utilisez le modificateur final lorsque cela est approprié.
-
Adhérez au principe DRY (Don’t Repeat Yourself).
-
Gardez la portée des symboles la plus courte possible pour améliorer la lisibilité du code.
-
Optez pour des noms de variables locales concis et significatifs.
-
Spécifiez clairement les paramètres des méthodes publiques et les noms des membres.
-
En suivant ces directives, vous pouvez maintenir une base de code propre et expressive pour votre application Grails.
i18n
-
Ne centralisez pas i18n, utilisez les dossiers du module d’application gradle
i18n
pour chaque application.
-
class name localisation "book.label = Libro"
-
class field name localisation "book.title.label = Título del libro"
-
Pour être efficace
-
Ne localisez pas trop tôt
-
Lorsque vous avez une vue d’ensemble globale, commencez la traduction
-
Utilisez pour les labels les plus globaux des clés courtes, utilisez l’espace de noms
default
pour eux, l’étiquette spécialisée peut être longue
-
-
Utilisez la convention pour votre i18n :
-
Préfixez avec "default" ce qui pourrait être réutilisé
-
Ne pas préfixer le nom de classe traduit
-
Dans l’application Crew, nous utilisons des fichiers de propriétés spécifiques aux actions et aux domaines (voir dossier Crew i18n)
-
L’i18n commun doit être localisé dans le module d’application Crew
ou Server
, les propriétés ne sont pas privées pour un module d’application.
Configuration
-
Utilisez l’énumération, dans le code, pour la configuration
-
La vérification statique est facilitée ;
-
Les énumérations Groovy sont plus lisibles que XML, Json, Yaml…
-
Sécurité
-
Le code lié à la sécurité doit être situé près du point d’influence
-
Nous voulons éviter la centralisation pour toutes les préoccupations
-
Créez un nouveau domaine selon les besoins, évitez d’encombrer la classe
User
-
Les concepts abstraits doivent être minimisés pour des raisons de sécurité ; les contrôles statiques sont cruciaux
-
-
-
Évitez les règles complexes qui ne peuvent pas être vérifiées de manière statique lors de la compilation
-
Les règles administratives ne doivent pas s’appuyer sur des chaînes d’autorisation, une valeur booléenne dans un objet est plus explicite lors des tests dans le code.
Classes du répertoire domain
-
Éviter les dépendances cycliques entre les classes domain de différents modules applicatifs
-
Ces classes doivent être minimales
-
Pas de helper et autres, avec des dépendances externes dans les domains
Pour être efficace :
-
Les petites évolutions ne déclenchent pas une réécriture complète du code
-
L’intégration de nouvelles fonctionnalités doit être simple
-
Les différentes préoccupations doivent rester isolées, minimisant l’influence mutuelle