Accueil Finances personnelles 10 Façons d'éviter les bogues en C ++ - des mannequins

10 Façons d'éviter les bogues en C ++ - des mannequins

Table des matières:

Vidéo: Le débogueur JavaScript (VSCode, Google Chrome) [M0L09] 2025

Vidéo: Le débogueur JavaScript (VSCode, Google Chrome) [M0L09] 2025
Anonim

Il est regrettable que vous passiez plus de temps à chercher et à supprimer des bogues que vous ne passerez réellement à écrire vos programmes C ++. Les suggestions ici peuvent vous aider à réduire le nombre d'erreurs que vous introduisez dans vos programmes pour faire de la programmation une expérience plus agréable.

Activer tous les avertissements et les messages d'erreur

La syntaxe de C ++ permet de nombreuses vérifications d'erreurs. Lorsque le compilateur rencontre une construction qu'il ne peut tout simplement pas déchiffrer, il n'a pas d'autre choix que de sortir un message. Il essaie de se synchroniser avec le code source (parfois avec moins de succès), mais il ne génère pas d'exécutable. Cela force le programmeur à corriger tous les messages d'erreur.

Cependant, quand C ++ rencontre une structure qu'il peut comprendre mais que la structure sent le poisson de toute façon, C ++ génère un message d'avertissement. Parce que C ++ est assez sûr qu'il comprend ce que vous voulez, il va de l'avant et crée un fichier exécutable afin que vous puissiez ignorer les avertissements si vous le souhaitez. En fait, si vous ne voulez vraiment pas être dérangé, vous pouvez désactiver les avertissements.

Désactiver ou ignorer les avertissements est une très mauvaise idée. C'est un peu comme si on débranchait le voyant «vérifier le moteur» sur le tableau de bord de votre voiture parce que cela vous dérange. Ignorer le problème ne le fait pas disparaître.

L'écriture d'un code C ++ dans un style clair et cohérent améliore non seulement la lisibilité de votre programme, mais entraîne également moins d'erreurs de codage. Cette situation quelque peu surprenante résulte du fait que notre cerveau n'a qu'une puissance de calcul limitée.

Lorsque vous lisez un code propre et soigné et qui suit un style que vous connaissez, vous passez très peu de temps à analyser la syntaxe des instructions C ++. Cela laisse plus de puissance CPU pour décoder ce que le programme essaie de faire et non comment il le fait.

Un bon style de codage vous permet de faire facilement les choses suivantes:

Différencier les noms de classe, les noms d'objet et les noms de fonction

  • Comprendre la classe, la fonction ou l'objet, en fonction de son nom

  • Différencier les symboles du préprocesseur des symboles C ++ (c'est-à-dire que les objets #define doivent ressortir)

  • Identifier les blocs de code C ++ au même niveau (résultat d'une indentation cohérente)

  • De plus, vous devez établir un format standard pour vos en-têtes de module qui fournit des informations sur les fonctions ou les classes de chaque module, l'auteur, la date, la version et quelque chose sur l'historique des modifications.

Tous les programmeurs impliqués dans un même projet doivent utiliser le même style de codage. Un programme écrit dans un patchwork de différents styles de codage est confus et semble non professionnel.

Commentez le code pendant que vous l'écrivez

Vous pouvez éviter les erreurs si vous commentez votre code pendant que vous l'écrivez, plutôt que d'attendre que tout fonctionne, puis revenez en arrière et ajoutez des commentaires.

La formulation de commentaires vous oblige à faire le point sur ce que vous essayez de faire. De brefs commentaires sont éclairants, à la fois lorsque vous les lisez plus tard et que vous les écrivez. Écrivez les commentaires comme si vous parliez à un autre programmeur bien informé.

Effectuer une seule étape dans le débogueur au moins une fois

En tant que programmeur, vous devez comprendre ce que fait votre programme. Il ne suffit pas que le programme génère la valeur attendue. Vous devez comprendre tout ce que fait votre programme. Rien ne vous donne une meilleure idée de ce qui se passe sous le capot que le programme

single-step , en l'exécutant pas à pas avec un bon débogueur (comme celui fourni avec Code:: Blocks). Au-delà de cela, lorsque vous déboguez un programme, vous avez besoin de données brutes pour comprendre un comportement bizarre qui pourrait apparaître lorsque le programme s'exécute. Rien ne vous donne plus de matière que de faire un pas à travers chaque fonction quand elle entre en service.

Enfin, lorsqu'une fonction est terminée et prête à être ajoutée au programme, chaque chemin logique doit être parcouru au moins une fois. Les bogues sont beaucoup plus faciles à trouver lorsque vous examinez la fonction par elle-même plutôt qu'après avoir été jeté dans le pot avec le reste des fonctions - d'ici là, votre attention s'est portée sur de nouveaux défis de programmation.

Limiter la visibilité

Limiter la visibilité des classes internes au monde extérieur est la pierre angulaire de la programmation orientée objet. La classe devrait être responsable de son état interne - si quelque chose se fout dans la classe, alors c'est la faute du programmeur de classe. Le programmeur d'application devrait s'inquiéter de résoudre le problème à portée de main.

Plus précisément, une visibilité limitée signifie que les membres des données ne devraient pas être accessibles en dehors de la classe - c'est-à-dire qu'ils devraient être marqués comme protégés. En outre, les fonctions membres que le logiciel d'application n'a pas besoin de connaître doivent également être marquées comme protégées. N'exposez pas plus d'éléments internes que nécessaire pour faire le travail.

Gardez une trace de la mémoire du tas

Perdre la mémoire de tas est la source la plus courante d'erreurs fatales dans les programmes qui ont été lancés sur le terrain - et, en même temps, le plus difficile à localiser. (Parce que cette classe d'erreur est si difficile à trouver et à supprimer, elle est répandue dans les programmes que vous achetez.) Vous devrez peut-être exécuter un programme pendant des heures avant que les problèmes ne surviennent (selon la taille de la fuite).

En règle générale, les programmeurs doivent toujours allouer et libérer la mémoire heap au même niveau. "Si une fonction membre MyClass:: create () alloue un bloc de mémoire tas et le renvoie à l'appelant, alors il doit y avoir un membre MyClass:: release () qui le renvoie au tas.Plus précisément, MyClass:: create () ne devrait pas exiger que la fonction parent libère la mémoire.

Dans la mesure du possible, MyClass doit garder la trace de ces pointeurs de mémoire et les supprimer dans le destructeur.

Mettre à zéro les pointeurs après avoir supprimé ce qu'ils pointent

Assurez-vous de mettre à zéro les pointeurs après qu'ils ne sont plus valides; vous le faites en leur affectant la valeur nullptr. Les raisons de cette action deviennent claires avec l'expérience: Vous pouvez continuer à utiliser un bloc de mémoire qui a été retourné au tas et même pas le savoir. Un programme peut fonctionner correctement 99 pour cent du temps, ce qui rend très difficile de trouver le 1 pour cent des cas où le bloc est réaffecté et le programme ne fonctionne pas.

Si vous annulez les pointeurs qui ne sont plus valides et que vous essayez de les utiliser pour stocker une valeur (vous ne pouvez pas stocker quoi que ce soit à ou près de l'emplacement nul), votre programme se bloque immédiatement. Crashing sonne mal, mais ce n'est pas si cela pose un problème. Le problème est là; c'est simplement une question de savoir si vous le trouvez ou non avant de le mettre en production.

Utiliser des exceptions pour gérer les erreurs

Le mécanisme d'exception de C ++ est conçu pour gérer les erreurs de manière pratique et efficace. En général, vous devriez lancer un indicateur d'erreur plutôt que de renvoyer un indicateur d'erreur. Le code résultant est plus facile à écrire, lire et maintenir. D'ailleurs, d'autres programmeurs en sont venus à s'y attendre, et vous ne voudriez pas les décevoir, n'est-ce pas?

Limitez votre utilisation des exceptions aux vraies erreurs. Il n'est pas nécessaire de lancer une exception à partir d'une fonction qui renvoie un indicateur "ne fonctionne pas" si cela fait partie de la vie quotidienne de cette fonction.

Déclarer les destructeurs virtuels

N'oubliez pas de créer un destructeur pour votre classe si le constructeur alloue des ressources telles que la mémoire de segment qui doit être retournée lorsque l'objet atteint sa fin ultime. Après avoir créé un destructeur, n'oubliez pas de le déclarer virtuel.

"Mais", vous dites, "ma classe n'hérite de rien, et elle n'est pas sous-classée par une autre classe. "Oui, mais ça

pourrait devenir une classe de base dans le futur. Sauf si vous avez une bonne raison de ne pas déclarer le destructeur virtuel, faites-le lors de la création de la classe. Fournissez un constructeur de copie et un opérateur d'affectation surchargé

Si votre classe a besoin d'un destructeur, il a presque certainement besoin d'un constructeur de copie et d'un opérateur d'assignation surchargé. Si votre constructeur alloue des ressources telles que la mémoire heap, le constructeur de copie par défaut et l'opérateur d'affectation ne feront rien mais créeront des ravages en générant plusieurs pointeurs vers les mêmes ressources.

Lorsque le destructeur d'un de ces objets est appelé, il restaure les actifs. Quand le destructeur de l'autre copie arrive, il va tout bousiller.

10 Façons d'éviter les bogues en C ++ - des mannequins

Le choix des éditeurs

Les bons outils pour la photographie macro - les nuls

Les bons outils pour la photographie macro - les nuls

Vous avez de nombreuses options pour l'équipement pour capturer des gros plans macro photographies. Vous avez peut-être déjà une caméra qui prend de superbes photos en gros plan. Macro photographie signifie créer une image dans laquelle le sujet est représenté sur le capteur numérique (ou plan de film) dans sa taille réelle. Si vous trouvez que les limites de votre ...

Conseils pour prendre bon point et déclenchez Photographies - mannequins

Conseils pour prendre bon point et déclenchez Photographies - mannequins

La photographie est sur la capture et la conservation images, et en tant que photographe, vous voulez prendre les meilleures photos que vous pouvez. Si vous utilisez un appareil photo compact, utilisez ces astuces simples pour améliorer vos photos: Verrouillez toujours la mise au point avant de prendre une photo. Cadre, ne viser pas. Utilisez le viseur ou sur l'écran tout affichage pour composer ...

Le trépied droit pour la photographie en macro et en gros plan - les nuls

Le trépied droit pour la photographie en macro et en gros plan - les nuls

Pour photographier certains sujets de près et en essayant d'atteindre certains résultats, le trépied que vous utilisez peut déterminer si vous réussissez ou échouez. Savoir ce qui est disponible sur le marché et les différences entre les trépieds peut être très utile et vous aide à décider quels trépieds vous conviennent le mieux. Lors de la sélection d'un trépied, accordez une attention particulière à ...

Le choix des éditeurs

Comment entendre la voix de Dieu pendant la prière chrétienne - par tys

Comment entendre la voix de Dieu pendant la prière chrétienne - par tys

La prière chrétienne est une façon de parler à Dieu. Cependant, pour tirer pleinement parti de la prière chrétienne, vous ne pouvez pas simplement parler, vous devez aussi vous préparer à écouter. Les conseils suivants peuvent vous aider à entendre ce que Dieu vous dit: Obtenez le scoop sur ce que Dieu vous dira par ...

Comparant les croyances à travers l'église chrétienne - les mannequins

Comparant les croyances à travers l'église chrétienne - les mannequins

Différentes confessions chrétiennes sont organisées et adorent de différentes façons. Cette liste pratique vous aidera à suivre et à comparer certaines différences dans le culte, les rituels et les croyances des plus grands groupes de l'Église chrétienne. Moyens de salut anglicans / épiscopaux: la grâce de Dieu par la foi seule. Comment ils adorent: le style traditionnel par la liturgie; liturgie contemporaine ...

Conversation avec Dieu - mannequins

Conversation avec Dieu - mannequins

La prière consiste simplement à communiquer avec Dieu. Il n'y a rien de magique à propos de la prière chrétienne; c'est une question de fait. Cependant, la prière chrétienne est plus que simplement dire à Dieu votre liste de demandes et s'attendre à ce qu'il réponde à vos prières comme s'il était un distributeur automatique cosmique. Oui, la prière est un moyen de partager avec Dieu ...

Le choix des éditeurs

Loi visant à accroître Uplifting émotions - mannequins

Loi visant à accroître Uplifting émotions - mannequins

Afin d'élever vos émotions, la première étape est de prendre conscience de ce qui émotions que vous avez. Prenez conscience de ce qui vous déclenche - ce qui vous met en colère et vous met en colère et ce qui vous rend très excité. Un déclencheur surveille certaines émissions de télévision et permet aux émotions de ces programmes de s'infiltrer ...

Comment les entreprises vous convainquent d'acheter leurs produits - mannequins

Comment les entreprises vous convainquent d'acheter leurs produits - mannequins

Presque tous les médias commerciaux destinés aux femmes reçoivent leur publicité les revenus des secteurs de l'alimentation, de la beauté, de l'alimentation et de la mode. Juste l'industrie de régime elle-même est une entreprise commerciale de 33 milliards de dollars par an. Et, bien sûr, ces industries ont continuellement besoin de clients pour continuer à réussir. C'est dans leur meilleur intérêt de ...

Comment l'image corporelle se forme dans votre jeunesse - les nuls

Comment l'image corporelle se forme dans votre jeunesse - les nuls

En général, ce que vous avez vécu avec votre famille grandissaient ont eu un effet direct sur les pensées et les sentiments que vous aviez à propos de votre corps. Repensez à vos jeunes années. Dans quelle mesure les énoncés suivants décrivent votre famille? Personne n'a exercé. La voiture était utilisée même pour de courts trajets. De la nourriture lourde et engraissante ...