Guidelines
Guidelines pour les projets web Bleu122
CSS + JS
- Eviter les appels externes tant que possible (importer les fichiers des librairies).
CSS
- Interdiction de copier / coller le chemin CSS vers l’élément (exemple : html body div#wrapper nav.navbar.navbar-default.navbar-static-top div.navbar-default.sidebar)
- Ne pas importer plusieurs librairies concurrentes (bootstrap + materialize par exemple). Ou alors importer la partie spécifique de l’un si nécessaire (seulement les inputs par exemple).
- Créer des variables pour les couleurs
- Convention de nommage : nom définissant
- Eviter le inline (styles= directement dans le HTML (toujours séparer le CSS dans un fichier à part))
- (Découper les CSS en fichiers selon les pages) >> Ajouter commentaire pour code spécifique à une page
- Pas de fichier CSS de plus de 2000 lignes
- Les espacements (margin, padding) sont des multiples de 4px (cf material design)
- Pas de camelCase >>> utilisation des tirets -
-
Ne pas surcharger les classes natives des frameworks (.container par exemple) mais créer classe spécifique (.container-custom par exemple).
-
Responsive : Utilisation de max-width only.
/* Extra large devices (large desktops, 1200px and down) */@media (max-width: 1200px) { ... }/* Large devices (desktops, 992px and down)*/@media (max-width: 992px) { ... }/* Medium devices (tablets, 768px and down) */@media (max-width: 768px) { ... }/* Small devices (landscape phones, 576px and down) */@media (max-width: 576px) { ... }/* Small devices (landscape phones, 320px and down) */@media (max-width: 320px) { ... }
JS
-
Pas de JS dans le HTML > tout dans des fichiers séparés : un fichier custom.js et un fichier par page s’il y a de la logique dessus
-
Design pattern objet (cf projets récents)
-
Listeners, pas onClick =
-
Importer les fichiers JS dans le header pour les applications pro
-
CamelCase
Objets de domaine Grails
-
On précise dans les constraints si la propriété est nullable. Sinon, par défaut, elle ne l’est pas.
-
Si une string est nullable, préciser qu’elle ne peut pas être blank (city nullable: true, blank: false).
-
Penser à préciser la contrainte d’unicité de la table (une seule région par pays avec le même nom par exemple).
-
Penser à gérer les 2 côtés de la relation (ne pas oublier les hasMany).
-
Type des propriétés en majuscules : Long, String… (pas long, string)
Sécurité
- Voir le fichier guidelines-security.md
Npm
- Pendant le dev, on ne commit/push pas les dépendances. Par contre avant la mise en prod, on commit et on push tout, y compris les dépendances (node_modules etc) pour être sûr d’avoir un projet opérationnel au prochain pull.