Normes de programmation

Introduction

Ce qui suit détaille brièvement les normes de programmation à respecter dans le cadre du cours.

Programmatique

L'environnement intégré de développement (IDE) de VB, tout coloré et cherchant sans cesse à nous aider dans notre démarche, tend à nous faire oublier certaines règles élémentaires de programmatique. Voici donc un bref rappel:

  • aération--les sous-programmes doivent êtres espacés les uns des autres par au moins une ligne vide;
  • indentation--une indentation d'au moins deux (2) et au plus quatre (4) espaces à chaque bloc d'instructions est obligatoire. Une indentation d'une tabulation sera acceptée. Le choix du mode d'indentation devra être conséquent tout au long d'un programme;
  • nomenclature générale--tout élément de programmation (variables, constantes, sous-programmes, paramètres, etc.) doit porter un nom significatif en fonction de son rôle dans le module où il est utilisé;
  • nomenclature des constantes--les constantes, par convention, doivent être nommées à l'aide de lettres majuscules, de chiffres et de caractères de soulignement uniquement. L'emploi de lettres minuscules est, ici, à proscrire;
  • nomenclature des contrôles--les contrôles utilisés sur toute interface personne/ machine devront porter un nom significatif, préfixé par une mnémonique propre au type du contrôle (voir le document Conventions d'affectation de noms aux objets pour une liste exhaustive);
  • accès aux globales--l'accès aux variables globales à un module devra se faire de par des fonctions (ou méthodes) Public (l'accès direct sera interdit, sauf exceptions); les variables globales devront, sauf rares exceptions justifiées sur une base individuelle, être Private;
  • découpage--les modules (généraux, de classe, de feuille, etc.) devront être segmentés en raison de leur fonction et du contexte de leur utilisation. Les interfaces personne/ machine devront se limiter à la tâche qui leur incombe en fonction de leur qualité d'interface personne/ machine (saisie et validation des entrées de l'usager, présentation et représentation des informations en sortie, ponctualité des interactions avec l'usager en fonction du contexte d'utilisation, etc.).
  • Algorithmique

    Sur le plan algorithmique, il sera entendu qu'un programme, pour se voir attribué une bonne note, devra:

  • exactitude--produire des résultats exacts en fonction des entrées qui lui sont soumises;
  • robustesse--être protégé contre des entrées incorrectes de la part de l'usager, et ne pas planter dans le cas de problèmes reliés à la communication entre processus ou à toute autre interface avec le monde extérieur au programme en soi (il est entendu que si le programme plante de lui-même, la situation sera encore pire... et il en ira de même pour l'évaluation qui en sera rendue);
  • démontrabilité--tout programme devra éviter au maximum les instructions de bris inconditionnel comme EXIT FOR, EXIT FUNCTION, EXIT SUB ou EXIT DO, de même que les instructions GOTO et GOSUB. Une dispense spéciale sera accordée dans le cas du traitement d'erreurs, dans la mesure où ce traitement sera localisé et justifié;
  • performance--s'approcher le plus possible d'une performance optimale en terme de vitesse d'exécution et d'espace utilisé (entendu qu'il est impossible d'optimiser les deux à la fois, il faudra faire les meilleurs choix en fonction des circonstances).
  • Ergonomie

    Sur le plan ergonomique, il sera entendu qu'une interface personne/ machine, pour se voir attribué une bonne note, devra:

  • exactitude--afficher des résultats exacts en fonction des entrées qui lui sont soumises, et du traitement qui est effectué par le système pour lequel on utiliser l'interface;
  • ergonomie--respecter l'ensemble des règles d'ergonomie cognitive couvertes dans le cours et dans les documents de support du cours;
  • choix des contrôles--utiliser les contrôles les plus appropriés au contexte dans lequel ils seront utilisés;
  • utilisabilité--faciliter au maximum l'utilisation de l'interface personne/ machine de la part de l'utilisateur- ou de l'utilisatrice-cible (en termes simples: du ou de la client(e)).