Conseils de programmation en C

A. Bouju, F. Bertrand, J. Burgaud




But :

Le but de ce document est de faciliter la mise au point et la maintenance de codes en rendant leur lisibilité plus grande.



Les Fichiers

Fichiers d'entêtes (header files)

Les fichiers d'entêtes permettent le prototypage de fonctions, la définition de constantes, .
Le nom du fichier est de type *.h.
Pour éviter les problèmes d'inclusion multiples il est recommandé d'utiliser la méthode suivante :
/*************************************************
  En debut de fichier
  ou NOMFICHIER est le nom du fichier en
  Majuscule
*************************************************/
#ifndef NOMFICHIER_H
#define NOMFICHIER_H

/*************************************************
 Le contenu du fichier                                                
*************************************************/

/*************************************************
  A la fin du fichier                                                       
*************************************************/
#endif
Inclure les fichier de l'utilisateur sous la forme :
#include "nom_de_fichier.h"
Inclure les fichier de librairie sous la forme :
#include <nom_de_fichier.h>
Les "constantes" définies par un define sont en majuscules.



Unité de programmation

Ce sont les fichiers qui contiennent le code des fonctions du programme, le nom du fichier est de la forme nomdefichier.c.
On inclut dans ce fichier le fichier d'entête correspondant nomdefichier.h.
Avant le code de chaque fonction préciser les paramètres de la fonction et son action, ce commentaire doit être repris au niveau du prototype.



Commentaire

Il est très important de bien commenter un programme.

Tous les fichiers doivent commencer par une entête.
ex :
/*-----
Projet :(eventuellement)
Fichier :
Date :
Auteur(s):
Description generale du code et de son objectif
-----*/

Identifieurs :

Il est souhaitable de donner un nom explicite au fichier.
L'identificateur d'une fonction doit être explicite et définir l'action de cette fonction.
S'il comporte plusieurs mots on sépare chaque mot par une majuscule.
ex:
AjouteUneLigne
L'identificateur de la variable doit clairement définir l'utilité de la variable.
Il doit permettre d'avoir des informations sur la portée de la variable et sur son type, pour cela on utilise des préfixes.

Préfixe Type d'information
g_ variable globale
l_ varaible locale

Préfixe Type d'information
c caractère (char)
sz chaîne à zéro terminal (char *)
i entier (int)
l entier long (long)
d double flottant (double)
f flottant (float)

ex :
int
        l_iLaTailleDeLaFenetreEst ;
/* Taille de la fenetre principale */
l_iLaTailleDeLaFenetreEst = 10;