Développement Logiciel / Bonnes pratiques Flashcards
Selon clean code, quel est le principe d’un commentaire ?
Expliquer des choses que le code ne peut peut pas exprimer de lui même.
Selon clean code, que faut t’il éviter dans un commentaire ?
Les données déjà save par git (date, auteur…), mal rédigés, le code mis en commentaire .
Selon clean code, quelles sont les bonnes pratiques au niveau des arguments de fonction ?
Le moins possible, pas d’arguments de sortie, les arguments booléens
Que faire avec un test qui ne passe pas ?
Ne pas le supprimer, mais plutôt le réparer.
Que doit faire une fonction ?
Exactement ce qu’on attend d’elle, ne pas qu’elle ai un comportement caché, sinon on n’aura plus confiance dans le code.
Qu’est ce que la redondance selon clean code ?
Le mal
Fonction et abstraction selon clean code ?
Une fonction doit avec son propre niveau d’abstraction. Il ne faut pas mélanger bas niveau et haut niveau.
Classe mère et classe fille selon clean code ?
La classe mère ne doit pas connaitre les classes filles.
Que doit on faire avec le code mort ?
Le supprimer, de toute façon il est save avec Git.
Qu’est ce que la séparation verticale (clean code) ?
Le code doit se rapprocher le plus possible au niveau vertical des méthodes qu’il appelle, pour ne pas devoir scroller pendant des heures.
Quel est l’ordre des opérations en informatique ?
Dans le même ordre qu’en mathématique.
Qu’est ce que l’incohérence dans Clean Code ?
Le fait de toujours faire une chose de la même manière dans le code, sauf à des endroits sans aucune justification
Qu’est ce que le désordre dans Clean Code ?
Le fait de mal ranger ses fichiers et dossiers
Qu’est ce que les variables explicatives ?
Le fait de stocker des résultats intermédiaires pour rendre plus lisible l’intention de l’algorithme
Est-ce une bonne idée de faire un nom de fonction long ?
Oui, si on ne peut pas rendre clair le rôle de la fonction avec un nom court.
Que faut t’il préférer au switch / if else ?
Le polymorphisme.
Qu’est ce qu’un nombre magique ?
C’est un nombre qui n’a pas variable associée, qui est juste posée comme ça dans le code. C’est une erreur quand on veut comprendre le code, ou faire du refactoring.
Qu’est ce que doivent faire une fonction ?
Une seule chose.
Que faut t’il éviter avec les fonctions booléens ?
Pas de négatif, c’est à dire pas de “Not” dans le nom.
Comment bien choisir un nom de fonction ?
Clair sur son rôle, et clair sur son niveau d’abstraction.
Que faut t’il éviter au niveau de la codification des noms de variable ?
Le hungarian case par exemple, qui consiste à préciser le type de la variable : name_s, age_i.. C’est pas beau. Il faut aussi éviter le mot list, ou object dans le nom des variable. Pour list, mieux vaut préférer le s du pluriel.
Qu’est il nécessaire lors des tests unitaire selon clean code ?
Qu’il teste assez de chose, qu’ils soient rapide à executer et qu’il y ai un outil de couverture de code.
Est il possible d’atteindre des tests exhaustifs ?
Non
Pourquoi il vaut mieux tester le plus tôt possible ?
Pour éviter les problèmes en prod, et donc perdre de l’argent
Comment sont placés les bugs ?
Ils sont souvent regroupés entre eux. Donc si il y a un problème quelque part, c’est bien de chercher d’autres bugs autour aussi
Si le produit est mal conçu, à quoi sert de corriger les bugs ?
A rien, puisque les specs sont mauvaises
Que faut il faire au niveau des tests avec les fonctionnalités critiques ?
Rajouter beaucoup de tests unitaires
Ou mène le mauvais code ?
Vers la faillite : réduit la productivité, l’ajout de features, la maintenance et le turnover
Est ce que la remise à Zero (refaire app) est une bonne chose ?
ça peut l’être si le code est vraiment dégeux. Par contre, si y’a pas de bonnes pratiques, alors on repart pour du code degeux.
Comment lutter contre la pression du patron qui veut accélèrer, quitte à faire du code dégeux ?
C’est dans son intérêt, métaphore avec le batiment (fondations sont pourries), et on est les seuls à connaître le code, il faut le protéger.
Selon Clean code, que sont les développeurs ?
Des artistes.
Qu’est ce qu’un code propre ?
Fait pour être lu, élégant, simple et direct, pas redondant et compris par les autres, avec des niveaux d’abstractions.
Quelles sont les règles de Dijkstra dans le clean code ?
Un seul return, pas de break ou de continue, jamais de goto
Comment rendre les constructeurs plus clairs ?
On peut faire des constructeurs statiques, pour ajouter un nom au constructeur.
Comment faire une bonne séparation verticale ?
Doit être lu comme un journal, le titre en haut, les notions clés ensuite, puis les détails. On assemble les mêmes idées entre elles.
Comment faire une bonne mise en forme horizontale ?
Mettre un espace entre les opérations, limite de longueur, ne pas rompre l’identation
Quel est le principe du singleton ?
Une seule instance d’une classe dans tout le code
Comment mettre en place un singleton ?
Une classe, avec un constructeur private et une méthode statique qui voit instancier ou retourner notre singleton
Quand mettre en place le singleton ?
1 : On veut un seul et unique object, avec les mêmes paramètres, pour tous les utilisateurs. 2 : On veut accéder facilement à l’object, sans le passer via des paramètres ou des variables globales.
Quels sont les avantages du singleton ?
On garantie l’unicité de l’instance, Point d’accès global, sans variables globales
Quels sont les inconvénients du singleton ?
Ne respecte pas SOLID, convient mal avec le multithreading, les tests unitaires deviennent compliqués.
Quel est le principe de la Fabrique (Factory) ?
Remplace les appels directs des constructeurs des objets par une classe qui gère la logique de construction.
Comment mettre en place une Factory ?
Créer une classe Factory, avec la logique de construction dedans. Supprimer les appels directs des constructeurs d’objets.
Quand mettre en place la Factory ?
Quand on a trop de logique dans les constructeurs, ou dans le choix des objets à instancier. Sert à éviter les gros if else / switch case, et d’isoler la logique de construction.
Quels sont les avantages de la Factory ?
Responsabilité unique : déporter la logique de construction. Ouvert/fermé : Permet de construire de nouveaux objets facilement.
Quel est le principe de l’Abstract Factory ?
Une factory, mais avec des classes filles Factory, tout simplement.
Quel est le principe du Builder Pattern ?
On ajoute des classes intermédiaires, qui vont nous servir pour définir les valeurs des attributs / valeurs du constructeurs. Pour une classe Computer, on va donc définir un GamingComputerBuilder, un DeskComputerBuilder, un LaptopComputerBuilder… Tout en construisant toujours un object de type Computer
Quand utiliser le Builder Pattern ?
- Quand on a beaucoup d’arguments dans un constructeur. 2. Quand on a beaucoup de variations dans les paramètres du constructeur, mais peu de variation dans la logique des objets (sinon on ferait directement des classes filles)
Quels sont les avantages du Builder Pattern ?
On évite les créations d’objet via le constructeur qui ne veulent rien dire. On découpe le code de construction du métier. On peut réutiliser le même code de construction pour d’autres objets.
Quels sont les inconvénients du Builder Pattern ?
Nécessite beaucoup de classes. Si il y a de la logique métier pour les différents objets construits par le Builder, autant faire des classes filles avec une Factory.
Quel est le principe du Prototype ?
On définit une méthode clone pour les objets, pour copier un objet sans avoir besoin d’appeler un constructeur.
Quand utiliser le Prototype ?
Quand les objets sont une galère à créer (constructeurs d’une lib qui prend trop de paramètres, ou trop flou)