SlideShare une entreprise Scribd logo
Ecrire un Code
TESTABLE
Mohamed Cherif BOUCHELAGHEM
Twitter: @cherif_b
Problème
Code difficile à changer
Bugs difficile à détecter
Solution
ingle responsability principle
pen/Closed Closed principle
iskov substitution principle
nterface Segregation principle
ependency injection
Robert C. Martin (Uncle BOB)
L’auteur du livre ‘Clean code’ (Coder proprement)
Single responsability
principle
SOLID « S » Principe de Responsabilité unique
Une classe n’a qu’une, et une seule,
raison de changer
SOLID « S »
Principe de Responsabilité unique
SOLID « S »
Principe de Responsabilité unique
• La solution est de diviser la classe en deux , une
pour communication avec le web service et la
deuxième pour passer les donner à notre objet
• Le web service sera ‘Mocké’ dans le test
facilement
• Des méthodes plus petites, moins de
dépendances entre les méthodes et moins de
régression
OPEN/CLOSED
PRINCIPLE
Le code doit être ouvert à l’extension
mais fermé à la modification.
SOLID « O »
OPEN/CLOSED PRINCIPLE
SOLID « O »
OPEN/CLOSED PRINCIPLE
Problème si on veux rajouter un autre réseau social
switch/case n’est pas une solution (anti-pattern)
SOLID « O »
OPEN/CLOSED PRINCIPLE
SOLID « O »
OPEN/CLOSED PRINCIPLE
Augmente la testabilité du code
Chaque service peut être testé séparément
LISKOV Substitution
Principle
SOLID « L »
LISKOV Substitution Principle
Si “S” est un sous-type de “T”, alors tout objet de type “T” peut être
remplacé par un objet de type “S” sans altérer les propriétés désirables du
programme concerné.
Violation du principe Carre n’est pas un
rectangle
SOLID « L »
LISKOV Substitution Principle
Implémentation du principe avec le design pattern Adaptateur
SOLID « L »
LISKOV Substitution Principle
Interface Segregation
Principle
SOLID « I »
Interface Segregation Principle
Quand on envoie un SMS est ce qu’on a besoin d’email??
SOLID « I »
Interface Segregation Principle
SRP respecté, moins de tests par classe, moins de dépendance entre méthodes
Dependency Injection
principle
Ecrire un code Testable
SOLID « D »
Dependency Injection Principle
Injection de dépendance
• SRP pour les acteurs et l’architecture de haut
niveau
• OCP pour la conception et l’extension des
fonctionnalités
• LSP pour l’héritage et sous typage
• ISP pour la communication entre la logique métier
et les clients (MVC, applications tierces…etc)
• DIC pour le découplage,
En résumé
L’application est un ensemble de
briques découplées (Composants)
Si SOLID sont bien
appliqués
On va constater que
Le Web, c’est juste un système de
livraison (PIPE)
La base de données c’est qu’un
détail
Le framework n’est pas le centre
du monde de notre application
Autrement dit
Autrement dit
Le framework nous aide juste dans
ces aspects de l’application
Logique métier est le
cœur de notre application
Tests Unitaire (Unit tests)
Choisissez votre aventure
Questions
Références

Contenu connexe

PPTX
TECNOLOGÍA
PPTX
Topic page-thematique-seo-semantique-fr
PPTX
Educación en Mundos Virtuales
PDF
PUERTO_PRESENTE, Una propuesta de elParlante.es
PPTX
Garcilaso de la vega
PPTX
3 conceptos tics
PDF
Alexander
PDF
5 SPIM Ferrocarril
TECNOLOGÍA
Topic page-thematique-seo-semantique-fr
Educación en Mundos Virtuales
PUERTO_PRESENTE, Una propuesta de elParlante.es
Garcilaso de la vega
3 conceptos tics
Alexander
5 SPIM Ferrocarril

En vedette (20)

PPTX
Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
PPTX
Previna-se da fraude de forma eficiente e aumente suas vendas
DOCX
Portales de colombia
PPT
Windows presentation fundation introduccion
PPTX
Oretic présentation ceser 27sept2012
PPTX
Historia de la pc y generaciones
ODP
Single Page Application
PPT
Ch2 representation
PPTX
Geasoc utilidad pública
PPTX
Informatica i
PPTX
Webquest
PDF
Gestion et prévention des conflits mylène lavoie
PPTX
Reforma al Campo- Uso eficiente del Agua en la Agricultura
PDF
Caractéristiques et transitions démographiques ouest-africaines
PPTX
La Sociedad de Información
PPTX
Herramientas Digitales
PPT
Atelier juridique CCI de Bordeaux
PPTX
Les chiffres clés de l’internet en france
PDF
Les outils de conception de l’aménagement du territoire: comment les choses é...
Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
Previna-se da fraude de forma eficiente e aumente suas vendas
Portales de colombia
Windows presentation fundation introduccion
Oretic présentation ceser 27sept2012
Historia de la pc y generaciones
Single Page Application
Ch2 representation
Geasoc utilidad pública
Informatica i
Webquest
Gestion et prévention des conflits mylène lavoie
Reforma al Campo- Uso eficiente del Agua en la Agricultura
Caractéristiques et transitions démographiques ouest-africaines
La Sociedad de Información
Herramientas Digitales
Atelier juridique CCI de Bordeaux
Les chiffres clés de l’internet en france
Les outils de conception de l’aménagement du territoire: comment les choses é...
Publicité

Similaire à Ecrire un code Testable (20)

PPTX
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
PPTX
SOLID Maitrisez votre programmation Objet​
PDF
jkhkhlkhkighlihkihilhlohljlhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh...
PPTX
CARA Coding Dojo - SOLID
PPTX
SOLID _Principles.pptx
PPTX
C'est quoi, du bon code ?
PPT
Design Patterns Java
PDF
TDD (Test Driven Developement) et refactoring
PDF
Qualité de code et bonnes pratiques
PDF
Mockito - Design + tests par Brice Duteil
PPTX
Clean code
PDF
Programmation STUPID vs SOLID (PHP Meetup)
PPSX
Le comportement au coeur de vos applications
PPTX
Le pilotage par les tests
PDF
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
PPTX
SOLID : les principes à l’origine du succès de Symfony et de vos applications
PDF
Language objet : passé, présent et futur
PDF
Patrons de conception de la programmation fonctionnelle
PPTX
Présentation Alt.net - Tests unitaires automatisés
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
SOLID Maitrisez votre programmation Objet​
jkhkhlkhkighlihkihilhlohljlhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh...
CARA Coding Dojo - SOLID
SOLID _Principles.pptx
C'est quoi, du bon code ?
Design Patterns Java
TDD (Test Driven Developement) et refactoring
Qualité de code et bonnes pratiques
Mockito - Design + tests par Brice Duteil
Clean code
Programmation STUPID vs SOLID (PHP Meetup)
Le comportement au coeur de vos applications
Le pilotage par les tests
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
SOLID : les principes à l’origine du succès de Symfony et de vos applications
Language objet : passé, présent et futur
Patrons de conception de la programmation fonctionnelle
Présentation Alt.net - Tests unitaires automatisés
Publicité

Dernier (11)

PPTX
Chapitre7-java------------------ Exception.pptx
PDF
UX DESIGN presentation canva plan et slides
PDF
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
PPT
Présentation de l’Analyse et Concepti SI
PDF
ENSEIGNEMENT/APPRENTISSAGE ET COMPETENCE
PPT
Icc courant de court circuit explication
PDF
Proposition de contenu pouvant résoudre les problèmes détectés à partir des é...
PDF
famille ................................
PDF
Regles sur la gestion de l’Eclairage public
PPTX
mon_expose_de_geophysique_dispositif_de_schlumberger.pptx
PPTX
mon_expose_de_geophysique_disposotif_de_wener.pptx
Chapitre7-java------------------ Exception.pptx
UX DESIGN presentation canva plan et slides
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
Présentation de l’Analyse et Concepti SI
ENSEIGNEMENT/APPRENTISSAGE ET COMPETENCE
Icc courant de court circuit explication
Proposition de contenu pouvant résoudre les problèmes détectés à partir des é...
famille ................................
Regles sur la gestion de l’Eclairage public
mon_expose_de_geophysique_dispositif_de_schlumberger.pptx
mon_expose_de_geophysique_disposotif_de_wener.pptx

Ecrire un code Testable