Plutôt code procédural ou plutôt classes ?
Code procédural
Le code procédural est plus simple à mettre en oeuvre. Je pense qu'il est adapté à des routines qui peuvent être appelées de n'importe où et qui peuvent être exécutées indépendamment du contexte. Je recommande de créer autant de collections de procédures qu'il y'a de natures de traitements.
Par exemple :
ProcGlobales | Toutes les variables globales et leurs procédures d'initialisation |
ProcConstantes | Toutes les constantes |
ProcRequetes | Toutes les requêtes SQL sous forme texte |
ProcCvTexte | Toutes les procédures de conversion portant sur des chaines |
ProcCvNum | Toutes les procédures de conversion numériques |
ProcCalculs | Toutes les procédures de calculs |
NOTE : le préfixe "Proc" (ou autre) permet de se simplifier la vie, notamment lors de la frappe de code avec l'assistant de saisie.
Ne pas hésiter à ranger dans des procédures différentes ce qui peut être générique (valable pour plusieurs projets) et ce qui est propre au projet. Ca permet de partager ou de réutiliser des procédures.
Par exemple :
ProcContantesGen | Constantes pouvant être communes à plusieurs projets ( _MR, _MME, _MLLE, etc...) |
ProcContantesProjet | Constantes propres au projet ( _RECETTE, _DEPENSE , etc...) |
Les classes
J'utilise les classes Windev dans deux cas :
- Lorsque je detecte que plusieurs mécanismes risquent de fonctionner PRESQUE de la même manière. La conception de classes de base et de classes dérivées permet de gérer élégamment ce PRESQUE.
- Lorsque plusieurs occurrences d'un même traitement peuvent être exécutées simultanément.
Le gros avantage d'une classe, par rapport à un code procédural est de contenir à la fois les traitements (méthodes en POO) et les variables (variables membres en POO). Chaque classe peut être instanciée (c'est à dire créée) autant de fois que l'on veut. Par exemple une instance de classe ClasseFacture peut avoir une variable membre :mTTC = 150 et une autre avec :mTTC = 28. De même l'une peut avoir un état d'avancement à "En cours" et l'autre à "Réglée".
En Windev l'utilisation de classes est parfaitement adapté à la gestion des fenêtres ou des états.
Dans une bonne application toutes les fenêtres d'un certain type doivent fonctionner de la même manière : les boutons doivent être placés aux mêmes endroits et remplir les mêmes fonctions, les messages doivent être du même type, les recherches doivent se faire de la même manière, etc...
De même un certain nombre de traitements peuvent fonctionner de manière QUASI identique. Par exemple, l'export de données vers différents logiciels comptables ou encore la lecture de fichiers XML ou XLS.
Je dirais qu'à partir du moment où l'on rencontre des traitements ou des gestions qui se ressemblent il faut penser classes et classes dérivées.