⚠️ Attention,

Ce talk contient du code pouvant heurter la sensibilité des plus crafts.

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Shodo.io

@SHODOioFR

Architecturoplastie hexagonale d’un backend Node.js : Opération à code ouvert       

@AdrienJoly

@JulienTopcu

@JkNourry

👨🏽‍⚕️

👨🏽‍⚕️

👨‍⚕️

@AdrienJoly

@JulienTopcu

@JkNourry

Dr. Adrien Joly

Techleaderie JavaScriptale

No Dr. Julien Topçu

No Dr. Jordan Nourry

Coachologie
Craftsmanshippienne

Coachologie Technique

👨🏽‍⚕️

👨🏽‍⚕️

👨‍⚕️

Patient: OpenWhyd.org

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Préparation du terrain opératoire:

Biopsies Clean Codiennes

@AdrienJoly

@JulienTopcu

@JkNourry

Opération du Patient

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Diagnostic

Glaucome de la lisibilité du code

 

Identification de la Pathologie

Couplage métastasé (fort) entre les différents organes (couches)

 

Hémorragie généralisée des responsabilités

Métier, base de données, parsing de requête

 

Malformation du système TESTo-endocrinien

Manque de pertinence et ciblage précis de l'erreur, filet de sécurité défaillant

 🩺

@AdrienJoly

@JulienTopcu

@JkNourry

S.O.L.I.D

Pourriture Logicelle

Opacité

Rigidité

Fragilité

Immobilité

Viscosité

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Renforcer la surveillance des constantes du patient : Approval Testoscopie

@AdrienJoly

@JulienTopcu

@JkNourry

Opération du Patient

@AdrienJoly

@JulienTopcu

@JkNourry

💉

Bilan d'étape

Ciblage chirurgicale des erreurs                                                                             ↘️Opacité  

 

Contrats d'entrée et sortie rendus explicites                                                        ↘️Opacité

 

Filet de sécurité des Approval Tests permettant un pivot de refactoring        ↘️Viscosité

 

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Réduction de la charge mentale tumorale par Clean Codepexie

@AdrienJoly

@JulienTopcu

@JkNourry

Opération du Patient

@AdrienJoly

@JulienTopcu

@JkNourry

💉

Bilan d'étape

Nommage explicite dans le code                                                                            ↘️Opacité

 

Réduction de la charge cognitive                                                                            ↘️Opacité

Single Level of Abstraction

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

3 formes de Complexité

Essentielle

Obligatoire

Accidentelle

@AdrienJoly

@JulienTopcu

@JkNourry

Architecture Hexagonale

Le Traitement

source: beyondxscratch.com

@AdrienJoly

@JulienTopcu

@JkNourry

source: beyondxscratch.com

@AdrienJoly

@JulienTopcu

@JkNourry

source: beyondxscratch.com

@AdrienJoly

@JulienTopcu

@JkNourry

source: beyondxscratch.com

@AdrienJoly

@JulienTopcu

@JkNourry

source: beyondxscratch.com

@AdrienJoly

@JulienTopcu

@JkNourry

Complexité Essentielle

Complexité Obligatoire

Complexité Obligatoire

↘️Complexité Accidentelle

Infrastructure

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Introduction de la couche métier : Domainoplastie

@AdrienJoly

@JulienTopcu

@JkNourry

Incision

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Domaine Passe-Plat

@AdrienJoly

@JulienTopcu

@JkNourry

Opération du Patient

@AdrienJoly

@JulienTopcu

@JkNourry

Domaine Passe-Plat

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Greffe de la logique métier par lobotomie de la couche de persistence

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Couplagectomie

@AdrienJoly

@JulienTopcu

@JkNourry

Couplagectomie

@AdrienJoly

@JulienTopcu

@JkNourry

Opération du Patient

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

💉

Bilan d'étape

Création de tests fonctionnels                                                           ↘️Opacité ↘️Viscosité

 

Définition et détourage des responsabilités          ↘️Opacité ↘️Immobilité ↘️Viscosité

Objets métier, API & SPI du domaine

 

Isolation du domaine                                                                           ↘️Fragilité ↘️Rigidité

Utilisation strict des objets métier & SPI

 

Rapatriement de la logique métier      ↘️Rigidité ↘️Fragilité ↘️Immobilité ↘️Viscosité

 

Typage                                                                               ↘️Opacité ↘️Fragilité ↘️Viscosité

JSDoc

 

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Anastomose Domaino-persistence

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Infrastructure

@AdrienJoly

@JulienTopcu

@JkNourry

Opération du Patient

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

💉

Bilan d'étape

Structure de données de la persistence explicite                           ↘️Opacité ↘️Viscosité

UserDocument

 

Anti-Corruption Layer                                                      ↘️Fragilité ↘️Rigidité ↘️Viscosité

Contrat de UserCollection dépend que des objets métier

Mapping UserDocument => User, parseInt(id), initialisation de Playlist[]

 

Externalisation de la migration de données                ↘️Fragilité ↘️Rigidité ↘️Viscosité

 

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Couplagectomie du Controller

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Couplagectomie

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Opération du Patient

@AdrienJoly

@JulienTopcu

@JkNourry

💉

Bilan d'étape

Découplage des différents organes                                              ↘️Rigidité ↘️Immobilité

Controller, Domaine, Persistence

Composition Root (Application)

@AdrienJoly

@JulienTopcu

@JkNourry

@AdrienJoly

@JulienTopcu

@JkNourry

Recoudre le patient : 
Intégration Testorraphie par ablation des Approval Tests

 

@AdrienJoly

@JulienTopcu

@JkNourry

Approval Tests

Functional Tests

?

?

@AdrienJoly

@JulienTopcu

@JkNourry

💉

Bilan de l'opération

Stratégie de Refactoring non prédictive

Test & Learn, Fail Fast, Mikado

 

Besoin d'un filet de sécurité efficace

Approval Tests

 

Réduction de la charge cognitive                 

Clean Code, Typage

 

@AdrienJoly

@JulienTopcu

@JkNourry

💉

Bilan de l'opération

Augmentation de la Robustesse

Ajouts de ≠ types de tests

Structure de données et Contrats explicites

Externalisation de la migration de données

 

Augmentation de la Maintenabilité

Emergence & Isolation du Domaine

Ségrégation des Responsabilités
Gestion des
≠ complexités via l'Architecture Hexagonale

Tests F.I.R.S.T.

 

@AdrienJoly

@JulienTopcu

@JkNourry

MERCI

N'oubliez pas de noter ce talk ! 🙏