Option A est meilleur, parce que:
Vous ne savez probablement pas ce qui est enveloppé derrière la méthode de débogage(). Est-ce un wrapper local que quelqu'un a ajouté pour traiter une logique supplémentaire avant de passer à l'appel Debug() de log4net? Que fait log4net dans cette méthode? Vous utilisez peut-être la source de log4net pour créer votre assembly, est-ce qu'un autre membre de l'équipe l'a modifié? Ok, donc vous avez personnellement vérifié le code, et c'est très rapide et vous utilisez l'assembly de Nuget, donc vous savez que personne dans votre équipe ne l'a changé. Qu'en est-il demain quand une nouvelle version de log4net tombe? Comment savez-vous que quelqu'un qui travaille sur un bogue log4net n'a pas introduit de code de journalisation qui fait fondre votre serveur dans toutes vos boucles serrées? Le stagiaire suivant copie-t-il votre code et apporte-t-il des modifications aussi bien informées que vous et en pensant à la façon dont la réalisation d'appels logiques complexes peut être plus coûteuse que prévu? De plus, gardez à l'esprit que différents appenders peuvent avoir des coûts de journalisation différents. Que se passe-t-il si quelqu'un change un appendeur asynchrone léger et léger pour un synchrone lent et synchrone?
Ligne de fond: code de manière défensive. C'est une vérification booléenne qui est vraiment simple et peu coûteuse, et elle pourrait éviter des problèmes de performances inattendus et délicats à l'échelle et sous la charge.Allez-vous jamais regarder cette vérification et dire: «Je regrette vraiment d'avoir écrit ça? Improbable.
pourriez-vous être plus précis sur votre «analyse précédente»? – Zonko
Saisir un décompilateur et passer par IsXXX de Log4Net activé - vous passez plusieurs appels de méthode virtuelle. –