Les goûts et les odeurs
Nastasia Saby


Un code de qualité ?
Une question dont la réponse est en devenir

C'est quoi un bad smell ?

Kent beck et Martin fowler se rencontrENT


Alternative classes with different interfaces
class Voiture
{
function roule()
{
//Fait avancer le véhicule
}
}
class Auto
{
function avance()
{
//Fait avancer le véhicule
}
}
Des méthodes pour y remédier
- Move method : déplacement d'une méthode d'une classe à une autre
- Move field : déplacement d'un champ d'une classe à une autre
- Extract method : Extraction d'une méthode pour former une sous méthode
- ...
Corriger ce qui existe déjà
T'étais possédé quand
t'as fait ce code ?
Euh ...

divergences au sein de notre communauté de développeurs
JE CONSIDère qu'une méTHode ne doit pas excéder ?
1) 10 lignes
2) 20 lignes
3) Ca dépend, ça dépasse :)
4) Aucune importance
5) Autre
JE PRéfère ?
1) découper mes méthodes par un nom explicite
2) ne découper mes méthodes que si je suis absolument sûr qu'elles seront réutilisées et j'utilise des commentaires pour rendre mon code plus explicite
Le code propre, c'est facile

Certains
Le code s'est tuer

#code mort
Code dupliqué



#code dupliqué
Il est mort né

#speculative generality
Les choses sont parfois plus compliquées
LONG METHOD/LARGE class
Oui mais combien ?

LARGE CLASS VS LAZY CLASS
Euh ...

Les bad smells SE COMPLètent
Primitive obsession
$personne = ['nom' => 'Linda', 'age' => 19];
$nomPersonne = $personne['nom'];
Data class
class Personne
{
protected $nom;
protected $age;
public function __construct(string $nom, int $age)
{
$this->nom = $nom;
$this->age = $age;
}
public function getNom(): string
{
return $this->nom;
}
public function getAge(): int
{
return $this->age;
}
}
Et DES CONFLITS PEUVENT APPARAÎTRE
LE commentaire
function roule()
{
//Met le carburant
DuCode
//Met la clef
DuCode
//Demarre
DuCode
//Appuie sur la pedale
DuCode
}
function roule()
{
metLeCarburant();
metLaClef();
demarre();
appuieSurLaPedale();
}
Zone de conflits


En résumé COMMENT dépasser tout ça ?
EXPéRIENCE
Partage
BIENVEILLANCE

Ressources/Liens
- Refactoring: Improving the design of existing code (Martin Fowler)
- Source Making (site et cours en ligne)
- Code Smell sur le wiki
- Des présentations : Clean code and code smell, Refactoring and code smell
échange/Questions ?
Merci
Les goûts et les odeurs(avec commentaires)
By nastasiasaby
Les goûts et les odeurs(avec commentaires)
- 733