un code maintenable avec le principe de responsabilite unique

22
Well-crafted software un code maintenable avec le principe de responsabilité unique Guillaume Gardais, Nicolas Capponi - Agile Grenoble 2012 1

Upload: nicolas-capponi

Post on 27-Jun-2015

941 views

Category:

Technology


1 download

DESCRIPTION

Présentation Agile Grenoble 2012 - Nicolas Capponi & Guillaume Gardais

TRANSCRIPT

Page 1: Un code maintenable avec le principe de responsabilite unique

1

Well-crafted softwareun code maintenable avec le principe de responsabilité

unique

Guillaume Gardais, Nicolas Capponi - Agile Grenoble 2012

Page 2: Un code maintenable avec le principe de responsabilite unique

2Contrat de session

SOLID / GRASPDes solutions magiques

Principe de Responsabilité Unique

Page 3: Un code maintenable avec le principe de responsabilite unique

3Qui sommes nous ?

@Wace99

@ncapponi

Kelkoo depuis 2010

DéveloppeurArchitecte logiciel

Kelkoo depuis 2003

DéveloppeurArchitecte logiciel

Page 4: Un code maintenable avec le principe de responsabilite unique

4Institut Médico Légal du Code

avecNicolas dans le rôle du Docteur Robert « Uncle Bob »

MartinGuillaume dans le rôle de l’Etudiant Codeur

Application

Page 5: Un code maintenable avec le principe de responsabilite unique

5Indices

2 Décrire la classe en une phrase: sans OU, sans ET

Beaucoup de variables d'instances, de méthodes, de lignes de codes, de classes1

3 Nom de classe générique: Manager, Process, Service, Helper, Tools

4 Code dupliqué: responsabilité diluée entre plusieurs éléments

Page 6: Un code maintenable avec le principe de responsabilite unique
Page 7: Un code maintenable avec le principe de responsabilite unique

7Indices (suite)

5 Métrique : LCOM4

Métrique : complexité cyclomatique6

7 Métrique : package cohésion

Page 8: Un code maintenable avec le principe de responsabilite unique
Page 9: Un code maintenable avec le principe de responsabilite unique

9Radiographie du cadavre

Page 10: Un code maintenable avec le principe de responsabilite unique

10Solution: Diviser

1 1 classe pour 1 responsabilité

Page 11: Un code maintenable avec le principe de responsabilite unique

11Solution: Facade

2 Simplifier l’utilisation de « Cart »

Page 12: Un code maintenable avec le principe de responsabilite unique

12Solution: Interface

3 Séparer les responsabilités

Page 13: Un code maintenable avec le principe de responsabilite unique

13Solution: Visiteur

4 Respecter l’encapsulation

Page 14: Un code maintenable avec le principe de responsabilite unique

14Quelle solution choisir ?

Page 15: Un code maintenable avec le principe de responsabilite unique

15Un peu de théorie

Principe de responsabilité unique (SRP)

Une classe ne doit avoir qu’une seule raison de

changer

Chaque responsabilité est un axe de changement

Robert Martin 1995/2002

Page 16: Un code maintenable avec le principe de responsabilite unique

16Conclusion

SRP est un principe, pas une règle

Contexte

Page 17: Un code maintenable avec le principe de responsabilite unique

17

Code, références:https://github.com/ncapponi/srp-2012

Merci

@Wace99@ncapponi

Page 18: Un code maintenable avec le principe de responsabilite unique

18

Page 19: Un code maintenable avec le principe de responsabilite unique
Page 20: Un code maintenable avec le principe de responsabilite unique

20Identifier les responsabilités

Rôle

Familles de fonctions

ModuleCart CartRepository MailBuider

Architecte

Stockageen BDD Sérialise

Product Marketing

AjouterUn produit

EnleverUn produit

Contenu duMail à envoyer

Page 21: Un code maintenable avec le principe de responsabilite unique

21Gestion du changement

Dégradation lors des évolutions

Réévaluer les axes de changements

à chaque évolution

Page 22: Un code maintenable avec le principe de responsabilite unique

22Quelques concepts

Couplage: faire évoluer l’un sans

modifier l'autre

Rigidité: chaine de dépendances

Fragilité : en touchant un module, on casse un comportement dans un autre

modèle apparemment indépendant