5. La bible: Clean Code Robert C Martin
Plusieurs points interessants:
1. On passe plus de temps à lire du code qu’à l’écrire
2. On devrait pouvoir sans cesse améliorer son code
3. Les commentaires ne sont jamais à jour / maintenu
4. Il est difficile d’intervenir sur des SFA :
Single Fonction Application
6. Conseils
1. Faciliter la lisibilité de son code via l’utilisation de méthodes, noms de
variables compréhensible
2. Mettre des tests unitaires pour permettre de pouvoir refactoriser/optimiser du
code sans craindre des régressions
3. Utiliser des méthodes explicites, des constantes et non des nombres/valeurs
en dur, voir refactoriser pour rendre l’ajout de commentaire inutile
4. Limiter la longueur/périmetre de vos méthodes
9. Les points forts de cette architecture
1. Regroupement du code métier de l’application dans un répertoire
2. Facilitation du portage du coeur de l’application (on peut par la suite migrer
l’appli en récupérant ces classes métiers
3. Possibilité de modifier/faire évoluer les apis, librairies externes utilisées
4. Facilitation de la mise en place de tests unitaire (étant donnée qu’on injecte
tous les éléments externe, on peut lui passer des mocks)
11. Mkframework et Software Craftsmanship
Depuis mars 2017,
ce framework propose un nouveau template de projet:
“Software Craftsmanship”
12. Mkframework et Software Craftsmanship
Avec une nouvelle
page sur le site pour
présenter ce nouveau
template.
13. Un template spécifique
Le Builder (générateur web) propose plusieurs templates pour commencer
Dont un orienté “software Craftsmanship”
- Utilisation de l’architecture hexagonale
- Multilingue natif
- Héritage multi niveau module parent/module enfant
- Génération des classes business + tests unitaires de base (via le Builder)
15. Arborescence du projet créé
business/ contiendra vos classes métier (hexagonal)
interface/ permettra d'être sûr que les éléments transmis à
vos classes métier contiennent bien certaines méthodes
nécessaires
module/ on voit la notion d’héritage + on voit une notion de
fichier de langue au sein du module (héritage également)
public/ le fameux “web root”
tests/ contiendra les tests unitaires/ci
16. Créons un simple CRUD pour comprendre
Création de la couche modèle
Création du CRUD
via le builder en
quelques clics
1
2
17. Ce qu’a créé le Builder
business/ une classe métier pour générer
l’administration de cette table “Cookbook”
module/ un module “Cookbooks” avec son fichier
de langue, ses vues et son controlleur
tests/ des fichiers de tests unitaire “de base” pour
votre module ainsi que la classe business
18. Focus sur la classe business
On remarque le constructeur qui attends des objets respectants une interface
20. Dans une action, par exemple l'édition, on appelle une méthode ici processSave()
Pour traiter le formulaire éventuellement soumis et afficher si besoin des
messages d’erreurs
21.
22. On déporte la mécanique dans une seule classe
On peut faire les
diverses vérifications
sur les entrées
utilisateurs,
et si, “non respectées”
retourner un tableau
d’erreurs traduites