Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Comment coder proprement
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Comment coder proprement

Posté le 19/12/2014 16:58

Beaucoup savent programmer et écrire des lignes de codes en écrivant parfaitement, je fais ici une liste des choses à faire pour réussir à éviter un code malpropre. Ce tuto est destiné aux langages C/C++ mais on peut aussi transposer à d'autres langages

1) L'indentation

C'est la règle absolu en programmation. Il faut savoir indenter, aussi bien pour vous que pour ceux qui liront votre code. En effet, l'indentation permet de visualiser très rapidement les différents blocs d'instructions.

Voici un exemple (il s'agit du style K&R que nous verrons après):

void a_function(void)
{
    if (x == y) {
        something1();
        something2();
    } else {
        somethingelse1();
        somethingelse2();
    }
    finalthing();
}


Il suit une indentation impeccable car on y distingue 1) la condition, 2) le bloc d'instruction exécuté si la condition est vrai et 3) le bloc d'instruction exécuté si la condition est fausse.

L'indentation sert aussi à repérer les crochets afin d'éviter les crochets en trop

Voici un exemple d'un mauvais code:
void function(void)
{
if (x == y) {
something1();
something2();
} else{
somethingelse1();
somethingelse2();
}
}
finalthing();
}


Un crochet en trop s'est même incrusté Imaginez vous le travail pour le repérez dans un code de 5000 lignes

Il existe même plusieurs styles d'indentation que vous pouvez voir ici (pour ma part, je travaille toujours avec le K&R qui est plus facile et plus lisible à mon sens)

2) La modularité

La modularité, c'est le principe du découpage d'un code en modules, c'est à dire en petite partie qui vont chacune s'occuper d'un truc bien défini, par exemple, tracer une ligne à l'écran ou calculer un nombre au hasard, cela permet de rendre plus lisible un code et de pouvoir utiliser un bout de code en une ligne .

Par exemple, voici ce qu'il ne faut pas faire
int main() {
    //...
    //...
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++i)
        {
            mat[i][j] = 1;
        }    
    }
    return 0;
}


On peut remarquer deux boucles l'une dans l'autre mais dans la fonction principale main, créons une fonction:

void InitTab2Dim (int** mat, int n, int m, int var)
{
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            mat[i][j] = v;
        }    
    }
}

int main() {
    //...
    //...
    InitTab2Dim(mat,n,m, 1)
    return 0;
}


On a créé une fonction dans laquelle on a mis le code gênant, puis on a appelé la fonction. On pourrait grâce à ça appeler une vingtaine de fois la fonction sans avoir à recopier le code

3) Bien nommer ses attributs

4) Les tableaux, pointeurs et références

5) La complexité

6) Speak English, please

7) utiliser correctement le préprocesseur

a suivre...

Note pour Lephe


Smashmaster Hors ligne Ancien modérateur Points: 4561 Défis: 253 Message

Citer : Posté le 20/12/2014 23:33 | #


Il faut utiliser beaucoup de fonctions.

Exemple à ne pas faire :


int main() {
    //...
    //...
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++i)
        {
            mat[i][j] = 1;
        }    
    }
    return 0;
}


Exemple à faire :

void InitTab2Dim (int** mat, int n, int m, int var)
{
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            mat[i][j] = v;
        }    
    }
}

int main() {
    //...
    //...
    InitTab2Dim(mat,n,m, 1)
    return 0;
}


les fonctions qui retournent un booléen doivent commencer par "Is" ou "Est" ( par exemple EstVide(foo), isEmpty(foo) ).

Lephenixnoir Hors ligne Administrateur Points: 24054 Défis: 169 Message

Citer : Posté le 21/12/2014 09:56 | #


Smashmaster a écrit :
les fonctions qui retournent un booléen doivent commencer par "Is" ou "Est" ( par exemple EstVide(foo), isEmpty(foo) ).

Pas seulement : hasChildren() par exemple.

Sinon, faut aussi veiller à utiliser des algorithmes à faible complexité.
Mon graphe (16 Jan): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 107 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd