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?

164
demandé sur Peter Mortensen 2013-06-20 11:28:46

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.

138
répondu Erik Schierboom 2018-03-16 14:22:40

(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)
110
répondu nothrow 2013-06-20 19:26:18

, 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
}
7
répondu Ashok Damani 2013-06-21 14:57:04

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.

6
répondu Tigran 2013-06-20 07:32:43

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.

5
répondu Fabian Bigler 2013-07-10 18:53:38