Quelle est la meilleure pratique pour renvoyer une valeur booléenne et chaîne
J'ai créé une méthode qui effectue des validations contre une Hiérarchie XML qui est généré dynamiquement par une autre Classe en Javascript texte lors de l'exécution.
Ma méthode actuellement renvoie Vrai ou Faux, ce qui est utile pour toute personne à l'aide de ma Classe mais je voudrais aussi revenir plus d'informations instructives car il peut y avoir plusieurs raisons qui peuvent jeter un Faux message.
Au début, j'ai pensé à changer le type de retour de bool pour certains Génériques type de Collection ayant une Chaîne de clé et valeur Booléenne je ne sais pas si c'est la meilleure approche.
Quelle est la Meilleure Pratique dans ce cas?
source d'informationauteur Mark | 2011-05-11
Vous devez vous connecter pour publier un commentaire.
Faire une classe comme
et le retour de l'objet de ValidationResponse
Un modèle qui est utilisé dans le
TryParse
méthodes d' .NET les types de données (par exemple,Int32.TryParse), et est très commun dans le monde C, est de renvoyer un booléen pour indiquer le succès ou l'échec. L'utilisateur a également transmettre une valeur par référence à la méthode de réception de la valeur analysée en arrière.Pour votre situation, votre signature de la méthode pourrait ressembler à:
CEPENDANT personnellement, je pense que la meilleure approche est de retourner un
Result
classe Dhinesh l'a décrit dans sa réponse, car il est plus souple, et à OO dans la nature. Je suis l'ajout de cette approche de la perfection 😉Créer vos propres résultats de la classe, votre méthode retourne et qui contient toutes les informations dont vous avez besoin. Avec cela, vous pouvez plus facilement l'étendre à l'avenir (comme dans dhinesh de la réponse.)
Une autre option est d'utiliser un
Tuple
objet à stocker à la fois lesstring
etbool
:Tuple<string, bool>
serait votre type de retour. (Uniquement disponible en .NET 4.0 et suivantes)La création d'un Résultat de la classe comme un nouveau type de retour comme suggéré dans d'autres réponses a le problème de la rupture de code existant.
Si vous voulez/besoin pour éviter cela, vous pouvez introduire un nouveau
string LastError
propriété contenant les messages d'erreur du dernier appel à votre méthode, et de garder la signature de la méthode intacte. Vous souhaitez utiliser commeCette approche n'est pas bien adapté pour le multi-threading environnements.
Si c'est devrait que la Hiérarchie XML validera - Alors, je dirais que c'est un exemple typique de l'endroit où vous devez utiliser une exception. La méthode ne renvoie nulle et jette sur l'échec, comme suit:
et à utiliser
Je ne sais pas à propos de les meilleures pratiques, mais si vous avez seulement les deux cas suivants:
Ensuite, vous pouvez simplifier à retourner une chaîne de caractères. Si il n'y a pas d'erreur, alors vous renvoie une chaîne vide qui est l'équivalent d'un code d'erreur de zéro.