c ++ / c langue (guide de programmation de haute qualité Lin Rui Résumé des recommandations)

Chapitre IV programmation C ++ / C Mise en route

. 4.1 Dans les expressions utilisant l' opérateur &&, nous devrions essayer de mettre le plus susceptible d'être faux dans la sous-expression à la
gauche de &&, en utilisant également l'opérateur « || » expression, d'essayer le plus susceptible d'être véritable expression à gauche « || » est. Depuis c ++ / c jugement de l'expression logique de prendre « mort subite » (loi de mort subite);

4.2 dans le if / else, la condition est d'essayer de probabilité plus élevée devraie condition de détermination est placé àavant,qui peut améliorer la performance du segment de programme.

4.3 Si le compteur commence à compter de zéro, il est recommandé pour les valeurs de variables de contrôle de la boucle de déclaration à l' aide de « fermeture avant ON » libellé. Pour éviter les erreurs différentielles.

4.4 Pour un tableau multidimensionnel, les méthodes de traversal correctes dépend de la langue dans quel ordre pour organiser les éléments du tableau de stockage. Fortran exemple est la « première colonne de fuite » éléments de matrice consécutifs stockés dansmémoire, et c ++ / c est basé sur « la première ligne » afin de stockeréléments du tableau successifs. Par conséquent. Un tableau de «première colonne » doit être conservé pour traversal « après la première colonne » de.

4.5 S'il y a un corps deboucle logique est déterminée, et un grand nombre de cycles, le jugement logique doitdéplacer hors du corps deboucle.

Chapitre des constantes C ++ / C

5.1 sens intuitif à faire usage de variables symboliques pour représenter un nombre ou une chaîne qui apparaît dans le programme plusieurs fois.

Chapitre VI C ++ / C base de la conception de la fonction

6.1 (1) a une fonction pour éviter trop de paramètres, le nombre de paramètres idéalement contrôlé dans5. Si trop de paramètres,types de paramètres, et facile à utiliser dans le mauvais ordre, cette fois, ces paramètres peuvent être encapsulées comme un objet etutilisant le transfert d'adresse oumode de transfert.
(2) Ne pas utiliser une liste des types etnombre de paramètres incertains. c incertain liste typique de la liste des paramètres de la fonction debibliothèque standard prinf, qui estprototype:

int printf(const char *format[,argument]...)

Ce style de fonction perdu une sécurité de type statique stricte au moment de la compilation.
6.2 Ne pas mélanger l' indicateur d'erreur normale retournée. Nous vous recommandons les paramètres de sortie normaux obtenus, et l'indicateur d'erreur est renvoyée par l'instruction de retour.
6.3 fonctions à une seule fonction, une fonction qui est une seule chose à remplir, ne pas concevoir la fonction polyvalente. La taille du corps de la fonction est plus petite, essayer de le contrôler en moins de 50 lignes de code.
6.4 non seulement pour vérifier la validité des paramètres d'entrée, mais aussi pour vérifier la validité des variables dans la fonction du corps d' une autre manière, comme les variables globales, les descripteurs de fichiers.
6.5 pour la gestion des erreurs des valeurs de retour doivent être claires, afin que les utilisateurs ne sont pas facilement ignorés ou mal compris la condition d'erreur.
6.6 Essayez d'éviter la fonction de mémoire avec la même entrée doit produire la même sortie. Fonction avec fonction mémoire, son comportement peut être imprévisible, parce que son comportement peut dépendre d'une sorte de « état de la mémoire. » Une telle fonction est ni apprécié ni faciliter facilement essais et l' entretien, en c ++ / c langue, est une fonction de la fonction de stockage de mémoire statique des variables locales. Recommandé d'utiliser des variables locales moins statiques, sauf si nécessaire, par exemple, les variables locales statiques peuvent atteindre package constantes globales.

inlie const char * GetWindowsPath(void)
{
  sttic const char *p="C:\\Windows\\";
  return p;

}

6.7 Bien que la syntaxe permet, mais s'il vous plaît ne identifiant pas défini alourdiraient la couche externe du même nom dans le bloc interne dans le bloc, sinon il va endommager l'intelligibilité du programme.
6.8 Ne pas utiliser la récursivité indirecte, qui est fonction de s'appeler en appelant une autre fonction, car elle endommagerait la clarté du programme.
6.9 à l'entrée de la fonction, il est recommandé d'utiliser les assertions pour vérifier la validité des paramètres (légalité).
6.10 S'il vous plaît ajouter des commentaires à la déclaration de asseert, de dire aux gens ce qu'il faut faire assert déclarations.
6.11 Si le paramètre d'entrée à l' aide du « pointeur est passé », puis ajoutez la modification const est d'empêcher la modification accidentelle du pointeur sur l'unité de mémoire, la protection.

Chapitre VII c ++ / c pointeurs, les tableaux et les chaînes

Chapitre VIII c ++ / c avancée Types de données

8.1 Afin de ne pas créer la confusion et nuire à la compréhension du programme, a également recommandé l'utilisation d'un simple , ensemble défini struct des données: alors que ADT a défini certains des meilleurs actes adoptés classe, si struct semble ne pas sentir le goût de orienté objet.
8.2 Dans la conception du champ de bits, il est préférable de ne pas laisser un membres sur le terrain de bits à travers un octet incomplet pour stocker, car cela augmentera le coût de l' informatique, par exemple, DateTime mauvaise conception précédente, bonne conception il devrait être:

struct DateTime
{
    unsigned int year;
    unsigned int month  :8;
    unsigned int day    :8;
    unsigned int hour   :8;
    unsigned int minute :8;
    unsigned int second :8;

]

S'il vous plaît utiliser l'opérateur sizeof () pour calculer la taille du champ de bits plutôt que d' essayer d'estimer, parce que vous pouvez facilement estimer l'erreur.
8.3 énumération anonyme pour définir un programme qui apparaît dans l'ensemble pertinent des constantes est une bonne idée, il peut remplacer les constantes macro et constantes symboliques const. Par exemple:

enum
{
   OBJECT_CREATION  =0X10,
   OBJECT_DELETION  =0X11,
   STATE_CHANGE     =0X12,
   ATTR_VALUE_CHANGE =0X13,
   NEW_ALARM        =0X20,

ALARM_CLEARED   =0X21,
ALRAM_CHANGED    0X22
};

Chapitre IX c ++ / c préprocesseur

9.1 (1) Bien que la définition de la macro est très flexible, et peut produire de nombreuses variantes d'utilisation en combinant les uns avec les autres, mais c ++ / c programmeurs ne définissent pas des macros très complexes, les macros doivent être simples et claires.
(2) en utilisant le nom de la macro en anglais caractères majuscules, ou la séquence d'abréviation, et utiliser la séparation « _ » entre chaque mot.
(3) Si vous avez besoin de publier une macro, la définition macro doit être placé dans un fichier d' en- tête, ou placé sur le dessus du fichier de mise en œuvre (Cpp) de.
(4) Ne pas utiliser une macro pour définir de nouveaux types de noms, vous devez utiliser typedf, ou susceptibles d'erreurs de cause.
(5) Les commentaires de bloc macro lorsque vous ajoutez un commentaire (/ * * /), et ne pas utiliser la ligne de commentaire. Parce que certains compilateurs peuvent mettre des commentaires macro-ligne interprétées plus tard dans le cadre du corps de la macro.
(6) faire usage de macros pour définir la variable symbolique substitué const.
(7) pour une fréquence plus élevée d'utilisation plus longs fragments de répétition de code, ou un modèle recommandé des paramètres de définition au lieu macro, car la répétition courte de fragments de code, peut être utilisé avec des paramètres de définition de macro, il est non seulement pour le type de considérations de sécurité. Mais elle reflète aussi l'optimisation et de compromis.
(8) pour éviter (par exemple, la fonction, la définition de type, etc.) macros définies dans une plage locale, à moins qu'il ne soit utilisé que dans cette région, il pourrait nuire à la clarté du programme.
Chapitre X c ++ / c structure de fichiers et le programme de mise en page a
continué. . .

Publié 42 articles originaux · louange gagné 3 · Vues 1216

Je suppose que tu aimes

Origine blog.csdn.net/qq_40910138/article/details/105166732
conseillé
Classement