module#
une codebase (ensemble du code du projet) doit etre scinde en plusieurs modules
un module doit etre represente par un couple de .h/.cpp il est necessaire de lister les signatures des fonctions on change jamais les attributs/donnes de lobjet: on appelle uniquement des fonctions
ce qui est a faire pour modulariser au maximum son code: separer son code en fonctionnalites
regrouper les fonctionnalites qui ont besoin des memes choses (donnes, operations sur les donnes) => 1 module 1 classe => 1 module 1 module => n fonctions
pour faire ca proprement on utilise un diagramme UML
diagramme UML#
1 diagramme c plusieurs classes et les liens entre eux 1 module c 1 ou plusieurs classes 1 classe = 1 boite decoupe entre public (ce a quoi les autres classes peuvent toucher) et privee (le reste donc) classe la plus pointee dans le schema = la premiere classe a ecrire et tester
notation en UML#
+: public-: prive- fleches entre classe: relations entre classe
une fleche de a vers b indique a a besoin de B
si la fleche est pleine, cela implique que a a besoin de creer un b pour venir a ses fins si la fleche est pointille, cela implique que a nas pas besoin de creer un b pour venir a ses fins
isolation du module#
on utilise pour isoler le plus possible des fonctions qui font office daccesseur/mutateur
accesseur quand la fonction permets de permets dacceder a une information mutateur quand la fonction permets de permets de modifier une information
il est important davoir un equilibre entre tout mettre en prive, et trop mettre en public.
exemples#
- Indenter le code pour plus de lisibilité
- Ajouter des commentaires (préconditions, rôle d’une boucle etc.)
- Donner des noms explicites et en suivant les conventions.
- Créer des fonctions au lieu de copier/coller du code plusieurs fois
- Vérifier les désallocations de mémoire
- Gérer les erreurs (dans lordre croissant de ce que les profs preferent)
- assertions, exceptions
- codes d’erreur en retour de fonction
- indicateurs passés en paramètre en mode donnée-résultat
- etre explicites lors des itérations et récursions (surtout allocation/désallocation)
- précalcul dans des tables et simplification des équations (expressions booleennes egalement)
- utiliser les bons types