crackage et piratage |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.6 Propreté du code
|
Les quelques éléments du langages que vous avez pu découvrir dans ce chapitre vous permettent déjà d'écrire vos premiers programmes qui font quelque-chose d'utile. Vous avez sans doute déjà eu l'occasion de remarquer qu'il arrive souvent de commetre des erreurs lorsque vous écrivez un programme. Avec de l'expérience bien sûr, vous ne reproduirez plus certaines de ces erreurs. L'expérience ne suffit cependant pas, et tout programmeur commet des erreurs de temps en temps dans ses programmes.
|
Rechercher et corriger ses erreurs est une tâche difficile qui demande beaucoup de temps, souvent plus que l'écriture initiale du programme. Pour avoir un programme sans erreurs, le pire que l'on puisse faire est donc d'écrire son programme le plus vite possible, pour ensuite le tester et chercher les erreurs une par une. Comme on dit souvent, mieux vaut prévenir que guérir : il vaut mieux prendre son temps lorsque l'on écrit un programme et faire bien attention à tout ce que l'on écrit, plutôt que de l'écrire rapidement, pour corriger les erreurs lorsqu'elles apparaîtront.
Prendre son temps pour faire les choses bien est la base indispensable pour écrire des programmes avec peu d'erreurs et économiser le temps de leur recherche et correction. Cela ne suffit cependant pas et un certain nombre d'habitudes doivent être prises dans la manière dont vous programmez, pour réduire le nombre d'erreurs au minimum. Nous en verrons plusieurs tout au long de ce cours, en voici quelques unes :
- Réfléchissez avant de coder.
Si vous vous précipitez sur le clavier dès que vous avez une idée de programme, vous avez toutes les chances de partir dans une mauvaise direction. Une fois que vous commencez à taper votre code, vous vous concentrez sur son écriture et perdez du recul sur l'ensemble de votre programme. Prenez plutôt une feuille de papier et un crayon et réfléchissez à la manière dont vous allez organiser vore programme. Prenez l'habitude d'écrire le pseudo-code de vos idées en français, pour les avoir bien en tête au moment où vous commencerez à programmer.
- Faites simple.
Ceci est probablement la règle la plus importante en programmation : faire le plus simple possible. Ne soyez jamais fier d'avoir écrit des milliers de lignes de code. Pour un même résultat, un programme court et simple a beaucoup plus de valeur qu'un long programme qui fait la même chose. Prenez toujours le temps de chercher le moyen le plus simple d'écrire votre programme, vous en serez toujours récompensé. Plus un programme est simple, moins il contiendra d'erreurs et plus il sera facile de l'améliorer.
- Utilisez des identifiants explicites.
Lorsque vous déclarez une variable, prenez le temps de rechercher l'identifiant le plus adapté à ce qu'elle va contenir. Une instruction comme "while (ligne < nb_lignes) " est bien plus facile à comprendre que si l'on avait écrit "while (toto < titi) ". L'objectif est que votre programme se lise quasiment comme du français, et se comprenne sans effort. Si vous devez écrire une variable qui va servir de compteur de colonnes, n'appelez pas votre variable "compteur ", qui est assez vague, mais plutôt "colonne ".
- Fixez-vous une convention d'écriture.
Le langage C vous laisse une grande liberté dans la manière dont vous présentez votre programme. Vous pouvez ajouter des espaces, tabulations, retours à la ligne n'importe où sauf au milieu d'un mot, sans que cela change son fonctionnement. Il est cependant important de prendre des habitudes et d'écrire ses programmes toujours de la même manière. Cela les rend plus faciles à relire et permet de voir les erreurs plus facilement.
Le dernier point demande un certain travail préalable, pour décider de votre propre convention. Nous ne vous imposons aucune convention, c'est à vous de faire ce qui vous convient le mieux. Pour vous y aider, nous allons détailler certains aspects de la convention que nous utilisons dans les programmes fournis dans ce cours. A vous de voir ce que vous souhaitez réutiliser :
- Nommage des variables : nos variables sont nommées en français, sous la forme de mots parfois abrégés, écrits en lettres minuscules, avec la première lettre de chaque mot en majuscule, sauf le premier. Par exemple :
exempleDeVariable . Le français a été choisi pour ce cours car il est destiné à un public francophone et jeune. En dehors de ce cours, nous utilisons plutôt l'anglais, pour pouvoir être lus par des non-francophones, entre autres raisons.
- Une instruction par ligne : c'est une règle systématique qui facilite la lecture et réduit les risques d'erreurs. Une ligne contient une instruction et une seule et dans le cas d'une structure if, l'instruction exécutée si la condition est vraie se trouve sur la ligne qui suit le if. De même, les lignes contenant des accolades de début et de fin de bloc ne contiennent rien d'autre.
- Indentation du code : un programme C est constitué de blocs imbriqués les uns dans les autres. Pour bien mettre en évidence cette structure, les instructions d'un bloc sont décalées d'un certain nombre de caractères vers la droite (3 dans notre cas), par rapport à celles du bloc qui le contient. Ceci permet de voir au premier coup d'oeil où commence et se termine chaque bloc d'instructions :
#include <stdio.h>
int main()
{
int nombre = 0;
printf("Instruction entre accolades, donc indentée de 3 caractèresn");
while (nombre < 5)
{
printf("Instruction indentée de six caractèresn");
if (nombre < 2)
{
printf("Celle-ci l'est encore plus (9)n");
}
else
printf("On indente, qu'il y ait ou non des accolades.n");
nombre++;
}
printf("Après un bloc, revient au niveau d'avant le bloc.n");
return 0;
}
De nombreux éditeurs de texte peuvent vous faciliter le travail de l'indentation. Vous pouvez par exemple utiliser la touche tabulation, pour ajouter un niveau d'indentation. Un conseil cependant : configurez votre éditeur pour qu'il ajoute des espaces et non un caractère tabulation. En effet, selon l'outil, une tabulation n'a pas toujours la même taille, et un source contenant des tabulations peut changer d'aspect suivant l'éditeur, et vous pouvez finir par avoir une indentation irrégulière.
- Espaces entre les mots clés, identifiants et opérateurs : nous plaçons systématiquement un espace avant et après chaque opérateur, que ce soit un opérateur d'affectation (
= , += , etc.) ou un opérateur de calcul, ou de comparaison (+ , * , <= , etc. ). Ceci permet de les mettre plus en évidence. On ne met par contre pas d'espace juste après une parenthèse ouvrante, ou juste avant une parenthèse fermante.
On met par contre un espace entre un mot clé et une parenthèse ouvrante, comme dans if (nombre < 2) . Il n'y en aura par contre pas dans le cas de l'utilisation de fonctions, comme pour printf("bonjour"); . De plus, comme en français, on ne mettra pas d'espace avant une virgule, mais on en met un après.
Exercice : après avoir fait vos propres choix de convention d'écriture de programme, mettez-les en application sur le programme suivant, sans changer l'ordre des instructions, ni ce que fait le programme. Bien sûr, vous pouvez tout à fait adopter exactement la convention de ce cours si vous le souhaitez.
#include <stdio.h>
int main()
{
int mavariable ;
printf ("Bonjour, quel est votre âge ?" ) ; scanf ( "%d" , & mavariable);
if(mavariable< 18) printf ( "Vous êtes mineurn") ;
else { printf(
"Vous êtes majeurn");
if( mavariable<50 )
printf ( "Vous avez moins de 50 ansn"); else {
printf("Vous avez 50 ans ou plusn" )
; printf ( "La moitié de votre âge est %dn" ,mavariable/ 2 ) ;
}
}
return 0;
}
Solution : nous ne pouvons pas vous donner de solution absolue pour cet exercice, voici cependant comment nous appliquons la convention utilisée dans ce cours, pour écrire un tel programme :
#include <stdio.h>
int main()
{
int age;
printf("Bonjour, quel est votre âge ?");
scanf("%d", &age);
if(age < 18)
printf("Vous êtes mineurn");
else
{
printf("Vous êtes majeurn");
if (age < 50)
printf("Vous avez moins de 50 ansn");
else
{
printf("Vous avez 50 ans ou plusn");
printf("La moitié de votre âge est %dn", age / 2);
}
}
return 0;
}
|
|
|
|
|
|
|
google-site-verification=0bcz4aeJDJ9T3dUZ30OBJLMEF867Z1npIGezBoHmXok
|
|
|
|
|
|
|
|