SlideShare ist ein Scribd-Unternehmen logo
1 von 37
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
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

Weitere ähnliche Inhalte

Andere mochten auch

Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura FamiliarReforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura FamiliarBarzón Nacional
 
Previna-se da fraude de forma eficiente e aumente suas vendas
Previna-se da fraude de forma eficiente e aumente suas vendasPrevina-se da fraude de forma eficiente e aumente suas vendas
Previna-se da fraude de forma eficiente e aumente suas vendasRakuten Brasil
 
Portales de colombia
Portales de colombiaPortales de colombia
Portales de colombiaLeidyPG1108
 
Windows presentation fundation introduccion
Windows presentation fundation introduccionWindows presentation fundation introduccion
Windows presentation fundation introduccionArely Guevara
 
Oretic présentation ceser 27sept2012
Oretic   présentation ceser 27sept2012Oretic   présentation ceser 27sept2012
Oretic présentation ceser 27sept2012Fanch Daniel
 
Geasoc utilidad pública
Geasoc utilidad públicaGeasoc utilidad pública
Geasoc utilidad públicaGeasoc
 
Informatica i
Informatica iInformatica i
Informatica iliizzk
 
Reforma al Campo- Uso eficiente del Agua en la Agricultura
Reforma al Campo- Uso eficiente del Agua en la AgriculturaReforma al Campo- Uso eficiente del Agua en la Agricultura
Reforma al Campo- Uso eficiente del Agua en la AgriculturaBarzón Nacional
 
La Sociedad de Información
La Sociedad de InformaciónLa Sociedad de Información
La Sociedad de Informaciónrebeca_or
 
Atelier juridique CCI de Bordeaux
Atelier juridique CCI de BordeauxAtelier juridique CCI de Bordeaux
Atelier juridique CCI de BordeauxCCI de Bordeaux
 
Les chiffres clés de l’internet en france
Les chiffres clés de l’internet en franceLes chiffres clés de l’internet en france
Les chiffres clés de l’internet en franceFrançois Bontemps
 
Les outils de conception de l’aménagement du territoire: comment les choses é...
Les outils de conception de l’aménagement du territoire: comment les choses é...Les outils de conception de l’aménagement du territoire: comment les choses é...
Les outils de conception de l’aménagement du territoire: comment les choses é...Union des Villes et Communes de Wallonie
 

Andere mochten auch (20)

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

Ähnlich wie Ecrire un code Testable

SOLID Maitrisez votre programmation Objet​
SOLID Maitrisez votre programmation Objet​SOLID Maitrisez votre programmation Objet​
SOLID Maitrisez votre programmation Objet​Vincent Petetin
 
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?Christophe HERAL
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns JavaVINOT Bernard
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?Rémi Lesieur
 
Le comportement au coeur de vos applications
Le comportement au coeur de vos applicationsLe comportement au coeur de vos applications
Le comportement au coeur de vos applicationsBenoit FONTAINE
 
Un code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite uniqueUn code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite uniqueNicolas Capponi
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 
Introduction à Spring.pdf
Introduction à Spring.pdfIntroduction à Spring.pdf
Introduction à Spring.pdfbadrfathallah2
 
Injection de dependances - Les bases
Injection de dependances - Les basesInjection de dependances - Les bases
Injection de dependances - Les basesOlivier Spinelli
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalDuchess France
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalagnes_crepet
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
MD Fair 2012 - Anatomie d'un email
MD Fair 2012 - Anatomie d'un emailMD Fair 2012 - Anatomie d'un email
MD Fair 2012 - Anatomie d'un emailContactlab
 
AgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgile Toulouse
 
E-commerce Paris 2012 - Anatomie d'un email
E-commerce Paris 2012 - Anatomie d'un emailE-commerce Paris 2012 - Anatomie d'un email
E-commerce Paris 2012 - Anatomie d'un emailContactlab
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)French Scrum User Group
 

Ähnlich wie Ecrire un code Testable (20)

SOLID Maitrisez votre programmation Objet​
SOLID Maitrisez votre programmation Objet​SOLID Maitrisez votre programmation Objet​
SOLID Maitrisez votre programmation Objet​
 
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?
 
Le comportement au coeur de vos applications
Le comportement au coeur de vos applicationsLe comportement au coeur de vos applications
Le comportement au coeur de vos applications
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Un code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite uniqueUn code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite unique
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Introduction à Spring.pdf
Introduction à Spring.pdfIntroduction à Spring.pdf
Introduction à Spring.pdf
 
Injection de dependances - Les bases
Injection de dependances - Les basesInjection de dependances - Les bases
Injection de dependances - Les bases
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
MD Fair 2012 - Anatomie d'un email
MD Fair 2012 - Anatomie d'un emailMD Fair 2012 - Anatomie d'un email
MD Fair 2012 - Anatomie d'un email
 
AgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratique
 
E-commerce Paris 2012 - Anatomie d'un email
E-commerce Paris 2012 - Anatomie d'un emailE-commerce Paris 2012 - Anatomie d'un email
E-commerce Paris 2012 - Anatomie d'un email
 
Clean code en pratique
Clean code en pratiqueClean code en pratique
Clean code en pratique
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
 
Interface Definition Language
Interface Definition Language Interface Definition Language
Interface Definition Language
 

Kürzlich hochgeladen

Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
le probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptxle probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptximaneeaouattahee
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésSana REFAI
 
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfpdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfMedAbdelhayeSidiAhme
 
mémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoiremémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoireEzechiasSteel
 

Kürzlich hochgeladen (6)

Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
le probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptxle probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptx
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfpdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
 
mémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoiremémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoire
 

Ecrire un code Testable