Citations
Bjarne Stroustrup (inventeur du c++)
” J’aime que mon code soit élégant et efficace.
La logique doit être simple pour que les bogues aient du mal à se cacher.
Les dépendances doivent être minimes afin de faciliter la maintenance.
La gestion des erreurs doit être totale.
Les performances doivent être proche de l’idéal afin que personne ne soit tenté d’apporter des optimisations éhontées qui dégraderaient le code. ”
Bjarne Stroustrup (inventeur du c++)
” Un code propre est un code simple et direct.
Il se lit comme une prose parfaitement écrite.
Un code propre ne cache jamais les intentions du concepteur, mais est au contraire constitué d’abstractions nettes et de lignes de contrôle franches. ”
Rien ne permet de l’améliorer de manière évidente. Tout a déjà été réfléchi par l’auteur du code et, si vous tentez d’imaginer des améliorations, vous revenez au point de départ, en appréciant le code que l’on vous a laissé, un code laissé par quelqu’un qui se souciait énormément de son métier.
Choisir des noms révélateurs des intentions
Choisir de bons noms prend du temps, mais permet d’en gagner plus encore. Vous devez donc faire attention à vos noms et les changer dès que vous en trouvez de meilleurs.
// Temps écoulé en jours
int d;
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;
A EVITER:
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] == 4)
list1.add(x);
return list1;
}
Supposons que nous travaillions sur un jeu du type démineur.
VALIDE:
public List<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell : gameBoard)
if (cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
Choisir des noms prononçables
Les fonctions
La deuxième règle est qu’elles doivent être encore plus courtes que cela.
UNE FONCTION DOIT FAIRE UNE SEULE CHOSE.
ELLE DOIT LA FAIRE BIEN ET NE FAIRE QU’ELLE.
Plus une fonction est courte et ciblée, plus il est facile de choisir un nom descriptif.
Un niveau d’abstraction par fonction.
Pour inclure les pages de montage et de démontage, nous incluons le montage, puis le contenu de la page de test et enfin le démontage. Pour inclure le montage, nous incluons le montage d’une suite s’il s’agit d’une suite, puis nous incluons le montage normal. Pour inclure le montage d’une suite, nous recherchons la page “SuiteSetUp” dans la hiérarchie parente et nous incluons une instruction avec le chemin de cette page. Pour rechercher le parent…
Les couplages temporels
public void dive(String reason) {
saturateGradient();
reticulateSplines();
diveForMoog(reason); }
diveForMoog(splines, reason); }
“Vous savez que vous travaillez avec du code propre lorsque chaque fonction que vous lisez correspond presque parfaitement à ce que vous attendiez.”
N’ayez pas peur de créer un nom long.
Un nom long descriptif vaut mieux qu’un nom court énigmatique complété d’un long commentaire descriptif.
Arguments d’une fonction
Ensuite viennent les fonctions à un argument, puis à deux arguments.
A EVITER
Les fonctions à trois arguments doivent être évitées autant que possible. Les fonctions qui prennent plus de trois arguments exige une très bonne raison ou ne doivent jamais être employées.
Objets en argument d’une fonction
Lorsque des groupes de variables sont passés ensemble, il est fort probable qu’ils fassent partie d’un concept qui mérite son propre nom. Il est conseillé alors de réduire le nombre d’argument en créant des objets.
Une fonction doit posséder une entrée et une sortie
Le véritable objectif est de raconter l’histoire du système et que les fonctions écrites doivent s’unir proprement en un langage clair et précis.
Les commentaires
Les commentaires sont, au mieux, un mal nécessaire. Si nos langages de programmation étaient suffisamment expressifs ou si nous avions suffisamment de talent pour les manier de manière à exprimer nos intentions, nous n’aurions pas souvent besoin des commentaires, voire jamais.
l’échec.
// Vérifier si l’employé peut bénéficier de tous les avantages.
if ((employee.flags & HOURLY_FLAG) &&(employee.age > 65))
if (employee.isEligibleForFullBenefits())
La mise en forme
La communication est le premier commandement du développeur professionnel.
était “faire en sorte que cela fonctionne”.
Des fichiers contiennent généralement 200 lignes, et une taille maximale de 500 lignes. Les fichiers courts sont généralement plus faciles à comprendre que les fichiers longs.
Les variables de contrôle des boucles doivent généralement être déclarées juste avant l’instruction de boucle.
Variables d’instance
Fonctions dépendantes
Constante et fonction
Affinité conceptuelle
Moins le fichier propose de méthodes, mieux c’est.