Règles à appliquer

Les deux règles principales

Pour votre projet, il vous est demandé de respecter les deux règles suivantes :

Consigne à respecter Règle 1 : Une chose = une variable

Respecter ce principe n’est pas évident contrairement à ce que l’on pourrait croire. Par exemple, créer une variable pour stocker l’information issue d’un calcul intermédiaire n’est pas un réflexe pour la plupart des programmeurs :

pow = fnt1(2x+3y+4) + pow(2x+3y+4) * gamma(2x+3y+4)

Ainsi, des expressions se répétant plusieurs fois dans le code représentent un symptôme de cet oubli, ce qui doit vous alerter.

Consigne à respecter Règle 2 : Nommez de manière claire et explicite vos variables et vos fonctions.

Vous devez donner des noms permettant de comprendre aisément le contenu de vos variables ainsi que le rôle de vos fonctions. Le projet 3D est un projet complexe de plusieurs centaines de lignes de code. Ne pas respecter cette règle posera problème à moyen terme car vous risquez de vous perdre dans votre propre code.

Assistance

Comprenez que si votre code source ne respecte pas ces deux règles de base, il sera très ardu de vous aider. De plus, modifier le code en appliquant ces règles, dans 60% des cas, va supprimer le problème qui vous irrite depuis deux heures. Alors, pourquoi s’en priver !!!

Exemples

Exemple 1

Le nom d’une variable, d’une fonction ou d’une classe doit aider à comprendre son rôle dans le programme. Si le nom d’une variable ou d’une fonction nécessite absolument un commentaire, cela sous-entend que le nom choisi reste trop imprécis. Voici un exemple :

int d; // temps écoulé en jours

Le nom d ne donne pas beaucoup d’informations. Le commentaire, certes plus précis, nous permet de comprendre que la variable correspond à une durée comptée en jours. Nous devons changer ce nom trop vague. Voici un deuxième essai :

int TimeElapsed;

Cela est déjà mieux. Cependant, si ce nouveau nom indique la nature de la variable, il ne donne pas l’unité de temps. Cela pourrait être des secondes comme des heures. Voici d’autres options plus précises :

int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;

Exemple 2

Nous constatons que l’expression x – y * alpha * k est utilisée plusieurs fois dans ce code :

if ( x-y*alpha*k > 4 )
{
        m = (x-y*alpha*k)  + c ;
        if ( m > 0 )
           T[ x, (int) (x-y*alpha*k)*( x-y*alpha*k) + c + 10 ]  = x-y*alpha*k ;
}

Généralement, cette situation correspond à un résultat intermédiaire qui aurait dû être stocké dans une variable. Voici le même code, mais cette fois, il respecte les deux principes de base : création d’une variable pour représenter une information et choix de noms clairs. Vous remarquerez que la lisibilité de ce morceau de code se trouve grandement améliorée :

float profondeur = x-y*alpha*k;
if   (  profondeur  >  dist_min_camera )    // anciennement : x-y*alpha*k > 4
{
        y_3D = profondeur + decalage_y ;
        if ( y_3D > 0 )
        {
                int y_ecran = (int) y_3D +  10;
                ZBuffer[ x_ecran, y_ecran] = profondeur;
        }
}