Quand utiliser "Essayer" dans un nom de méthode? [fermé]
Nous discutions avec nos collègues de ce que cela signifie si le nom de la méthode commence par"Try".
Il y avait les opinions suivantes:
- Utilisez " Try " lorsque la méthode peut renvoyer une valeur null.
- Utilisez " Try " lorsque la méthode ne lancera pas d'exception.
Quelle est la définition officielle? Que dit " Try " dans le nom de la méthode? Y a-t-il des écrits officiels à ce sujet?
5 réponses
Ceci est connu comme le modèleTryParse et a été documenté par Microsoft. La page MSDN Exceptions officielles et performances indique :
Considérez le modèle TryParse pour les membres qui peuvent lancer des exceptions dans des scénarios courants pour éviter les problèmes de performance liés aux exceptions.
Ainsi, si vous avez du code pour lequel un cas d'utilisation régulier signifierait qu'il pourrait lancer une exception (comme l'analyse d'un int), le modèle TryParse fait sens.
(corrigé) Il y a une ligne directrice officielle, comme Erik l'a suggéré.
Quand je vois la méthode TrySomething
, Je l'assume
- ne lance pas
- renvoie
bool
- si j'attends une valeur, elle est renvoyée via le paramètre ' out '
- Il existe une méthode
Something
, qui me permet de gérer moi-même toute exception. (modifier, suggéré par Jesse Webb)
, je pense que vous devriez utiliser try
lorsque vous voulez procéder. Peu importe qu'une méthode renvoie une valeur ou non.
Cas 1: s'il retourne bien, vous pouvez procéder d'une manière ou d'une autre.
Cas 2: s'il ne revient pas: c'est toujours bien; vous pouvez procéder d'une autre manière.
Et si vous attendez une valeur en sortie de cette méthode, utilisez le paramètre out
.
Exemple
int value
if (dictionary.TryGetValue("key", out value))
{
// Proceed in some way
}
else
{
// Proceed in some other way
}
Vous devez utiliser " Try " dans le nom de la méthode, Lorsque vous voulez manifester le fait que l'invocation de la méthode peut produire un résultat non valide. En passant, suivant le standard. net, ce n'est pas une fonction qui déclenche une exception, mais la fonction qui renvoie une valeur VALID
ou NON_VALID
, du point de vue du programme.
À la fin, cette convention de nommage que vous décidez d'utiliser dans votre groupe.
Assurez-vous d'inclure try
dans votre nom de méthode si:
- Vous ne lancez aucune exception
- Votre méthode a la signature suivante:
bool TrySomething(input, out yourReturn)
Donc, fondamentalement, si nous utilisons des méthodes try
, nous n'obtenons qu'un résultat booléen.
Donc, le code suivant ne lancera aucune exception:
string input = "blabla";
int number;
if (int.TryParse(input, out number))
{
// wooohooo we got an int!
} else
{
//dooh!
}
Alors que ce code peut (et dans ce cas va) lancer des exceptions:
string input = "blabla";
int number;
try
{
number = int.Parse(input); //throws an exception
}
catch (Exception)
{
//dooh!
}
L'utilisation des méthodes Try est un moyen plus sûr et plus défensif de coder. Aussi l'extrait de code #2 prend plus de performances à exécuter si ce n'est pas un entier.