190 votes

Affirmer le mal?

L' Go langue créateurs écrire:

Aller ne fournit pas des affirmations. Ils sont indéniablement pratique, mais notre expérience a été que les programmeurs utilisent comme une béquille pour éviter de penser à la bonne gestion des erreurs et des rapports. La bonne gestion d'erreur signifie que les serveurs de continuer à fonctionner après des erreurs non fatales au lieu de s'écraser. Bon rapport d'erreur signifie que les erreurs sont direct et le point, de sauver le programmeur de l'interprétation d'un gros crash de trace. Les erreurs précises sont particulièrement importantes lorsque le programmeur de voir les erreurs n'est pas familier avec le code.

Quelle est votre opinion à ce sujet?

311voto

caf Points 114951

Non, il n'y a rien de mal avec assert aussi longtemps que vous l'utilisez comme prévu.

C'est, il est censé être pour la capture de cas qui "ne peut pas se produire", lors du débogage, par rapport à la normale erreur de manipulation.

  • Affirmer: Une défaillance dans la logique du programme lui-même.
  • Gestion des erreurs: Une erreur de saisie ou de l'état du système n'est pas dû à un bogue dans le programme.

106voto

gahooa Points 38006

Non, ni goto ni assert sont mal. Mais les deux peuvent être utilisés à mauvais escient.

Affirmer, c'est pour des contrôles d'intégrité. Des choses qui devraient arrêter le programme si elles ne sont pas correctes. Pas de validation ou comme un remplacement pour le traitement des erreurs.

62voto

jalf Points 142628

Par cette logique, les points d'arrêt sont trop mal.

Affirme devrait être utilisé comme un débogage de l'aide, et rien d'autre. "Mal", c'est quand vous essayez de les utiliser à la place d'erreur de manipulation.

Les assertions sont là pour vous aider, le programmeur, de détecter et de résoudre les problèmes qui ne doit pas exister, et de vérifier que vos hypothèses rester fidèle.

Ils n'ont rien à voir avec la gestion des erreurs, mais malheureusement, certains programmeurs abus comme tel, et ensuite de les déclarer "mal".

39voto

arhuaco Points 615

J'aime bien utiliser pour faire valoir beaucoup. Je trouve cela très utile quand je suis en création d'applications pour la première fois (peut-être pour un nouveau nom de domaine). Au lieu de faire de très chics vérification d'erreur (que je considère l'optimisation prématurée) je code rapide et j'ajoute beaucoup de affirme. Après je sais plus sur la façon dont les choses fonctionnent, je ne la réécriture et de supprimer certains s'affirme et changer pour une meilleure gestion des erreurs.

En raison de affirme je passe beaucoup moins de temps de codage/débogage des programmes.

J'ai aussi remarqué que les assertions m'aider à penser à beaucoup de choses qui pourraient briser mes programmes.

30voto

yuku Points 15705

Comme plus d'informations, accédez fournit une fonction intégrée panic. Ceci peut être utilisé à la place de assert. E. g.

if x < 0 {
    panic("x is less than 0");
}

panic imprime la trace de la pile, de sorte que, d'une certaine façon, il a pour but d' assert.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: