Nunit: Suppression progressive de la classe de garde

Créé le 24 sept. 2018  ·  4Commentaires  ·  Source: nunit/nunit

ReSharper et (ces dernières années) Visual Studio suggèrent d'insérer ArgumentNullException et des vérifications d'arguments similaires. C'est une mémoire tellement musculaire que je les ai introduits par accident dans la base de code plusieurs fois.

Lancer directement est un C# plus idiomatique du point de vue de l'analyse du contrôle de flux. Le compilateur C# comprend que vous n'avez pas besoin de retourner une valeur ou d'initialiser une variable avant l'utilisation ou de rompre avec un changement de casse si vous utilisez throw plutôt que Guard . La vérification de flux nul de ReSharper est la même.

De plus, avec C# 7.0, les expressions de lancement peuvent être pratiques. Par exemple, la syntaxe _foo = foo ?? throw new ArgumentNullException(nameof(Foo)); .

Quels sont les autres avantages ou inconvénients de permettre aux contributeurs et à nous-mêmes de lever des exceptions directement au lieu d'utiliser Guard ?

Commentaire le plus utile

Personnellement, j'aime la classe de garde - mais je suis d'accord qu'il y a un problème de découvrabilité. Je le suggérerais normalement aux contributeurs réguliers, mais je ne le mentionnerais pas aux contributeurs ponctuels. Je ne pense pas que ce soit un domaine dans lequel nous avons particulièrement besoin de cohérence, n'est-ce pas ? Je suis heureux de le voir quand il est là, mais pas inquiet quand il ne l'est pas.

Je suis assez indifférent à l'issue de ce problème, dans les deux cas ça me va 😊

Tous les 4 commentaires

Le principal avantage de l'utilisation de la classe Guard est la facilité d'utilisation, si je me souviens bien. Dans un IDE compatible C#, ce n'est plus l'option la plus simple pour moi ou pour les nouveaux contributeurs. Avons-nous besoin de cohérence, dans un sens ou dans l'autre ? La cohérence oppose ce qui est le plus facile pour certains d'entre nous contre (potentiellement) ce qui est le plus facile pour d'autres d'entre nous.

Personnellement, j'aime la classe de garde - mais je suis d'accord qu'il y a un problème de découvrabilité. Je le suggérerais normalement aux contributeurs réguliers, mais je ne le mentionnerais pas aux contributeurs ponctuels. Je ne pense pas que ce soit un domaine dans lequel nous avons particulièrement besoin de cohérence, n'est-ce pas ? Je suis heureux de le voir quand il est là, mais pas inquiet quand il ne l'est pas.

Je suis assez indifférent à l'issue de ce problème, dans les deux cas ça me va 😊

Je suis aussi un peu apathique à ce sujet. Il fournit une cohérence et une utilisation correcte des constructeurs d'exceptions (j'ai vu le message et le nom du paramètre à l'envers à quelques reprises), mais il ajoute également une méthode supplémentaire à la pile d'appels. De plus, comme vous le dites, la nouvelle syntaxe C# le rend beaucoup plus facile.

Je ne suis pas sûr que nous ayons besoin d'une purge en gros, mais je suis d'accord pour ne pas l'exiger.

Merci à tous, ça sonne bien !

Cette page vous a été utile?
0 / 5 - 0 notes