SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
Maintenance et
refactoring d'une
application
Ruby on Rails - 3 tips
Hello !
Je suis Hadrien Blanc
Freelance Software Engineer
@hadrienblanc
2
3
References :
■ Clean Code - A Handbook of Agile Software
Craftsmanship (Robert C.Martin) - 2009
■ Refactoring - Improving the Design of Existing Code
(Martin Fowler) - 1999
■ Rails Antipatterns - Best practices Ruby on Rails
Refactoring (Chad Pytel, Tammer Saleh) - 2011
4
1. Évitons les modèles
god-class avec des
includes
(include VS extend)
2. Utilisons des scopes dans
les modèles pour éviter du
spaghetti SQL
3. Null Object Pattern
1.
Évitons l'Antipattern
god-class
God-class : un modèle de 2500
lignes de code
6
7
8
9
10
11
12
13
14
15
16
17
18
Un exemple : la gem devise
19
20
?
include
ou
extend
??
include
22
23
extend
24
include extend
25
?
Utiliser extend ActiveSupport::Concern ?
26
→ Permet d'utiliser included (ajout de callback, de validation,
…)
→ Gestion plus fine des dépendances
Plus d'info :
https://api.rubyonrails.org/v5.2/classes/ActiveSupport/Conc
ern.html
27
Pas de god class dans la gem devise !
2.
Utilisons scope
Pour éviter du spaghetti-SQL
28
29
30
31
32
33
34
35
36
37
38
3.
Null object pattern
From :
RailsConf 2015 - Nothing is
Something
By, Sandi Metz
39
40
41
42
43
44
45
46
Merci !
Hadrien Blanc
@hadrienblanc
blanc.hadrien@gmail.com
47
Credits
◎ References des livres :
○ Clean Code - A Handbook of Agile Software
Craftsmanship (Robert C.Martin) - 2009
○ Refactoring - Improving the Design of Existing
Code (Martin Fowler) - 1999
○ Rails Antipatterns - Best practices Ruby on Rails
Refactoring (Chad Pytel, Tammer Saleh) - 2011
◎ Presentation Sandi Metz RailsConf 2015 - Nothing is
Something https://www.youtube.com/watch?v=OMPfEXIlTVE
◎ Presentation template by SlidesCarnival
◎ Hadrien gist code : https://gist.github.com/hadrienblanc/85ce087428dc19fb31a5542648b9c1b0
48

Contenu connexe

Similaire à Maintenance et refactoring d'une application rails : 3 astuces

#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
Atsé François-Xavier KOBON
 

Similaire à Maintenance et refactoring d'une application rails : 3 astuces (20)

Linq Tech Days08 Lux
Linq Tech Days08 LuxLinq Tech Days08 Lux
Linq Tech Days08 Lux
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
JAVA 8
JAVA 8JAVA 8
JAVA 8
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIs
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server Internals
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 

Maintenance et refactoring d'une application rails : 3 astuces