Estábamos discutiendo con nuestros compañeros de trabajo sobre lo que significa si el nombre del método comienza con "Probar".
Hubo las siguientes opiniones:
- Use "Probar" cuando el método pueda devolver un valor nulo.
- Use "Probar" cuando el método no arroje una excepción.
¿Cuál es la definición oficial? ¿Qué dice "Probar" en el nombre del método? ¿Hay alguna directriz oficial sobre esto?
c#
naming-conventions
ms007
fuente
fuente
Respuestas:
Esto se conoce como el patrón TryParse y ha sido documentado por Microsoft. La página oficial de Excepciones y rendimiento de MSDN dice :
Por lo tanto, si tiene un código para el que un caso de uso regular significaría que podría arrojar una excepción (como analizar un int), el patrón TryParse tiene sentido.
fuente
(Corregido) Existe una directriz oficial, como sugirió Erik.
Cuando veo el
TrySomething
método, lo asumobool
Something
método que me permite manejar cualquier excepción yo mismo. (editar, sugerido por Jesse Webb)fuente
TryFoo
método, habrá unFoo
método similar que me permita manejar cualquier `` excepción yo mismo. Las firmas de estos métodos probablemente serán diferentes, por lo que sus usos no son intercambiables sin otros cambios de código.Creo que deberías usar
try
cuando quieras continuar. No importa que un método devuelva algún valor o no.Caso 1: si vuelve bien, puede proceder de alguna manera.
Caso 2: si no regresa: todavía está bien; puedes proceder de otra manera.
Y si espera algún valor como resultado de ese método, use el
out
parámetro.Ejemplo
fuente
Debe usar "Probar" en el nombre del método, cuando desee manifestar el hecho de que la invocación del método puede producir un resultado no válido. Siguiendo el estándar .NET, por cierto, no es una función que genera una excepción, sino la función que devuelve algo
VALID
oNON_VALID
, desde la perspectiva del programa, valor.Al final, se trata de una convención de nomenclatura que decides usar en tu grupo.
fuente
Asegúrese de incluir
try
en su nombre de método si:bool TrySomething(input, out yourReturn)
Básicamente, si usamos
try
-methods solo obtenemos un resultado booleano.Entonces, el siguiente código no arrojará ninguna excepción:
Mientras que este código puede (y en este caso lo hará) lanzar excepciones:
Usar métodos Try es una forma más segura y más defensiva de codificar. Además, el fragmento de código # 2 requiere más rendimiento para ejecutarse si no es un número entero.
fuente
int number = int.Parse(input);
si desea que sea más significativo en este contexto.int number;
declaración antes del bloque try y lanumber = ...
asignación.TryLoadFile(path, out file)
woah, fuera de la RAM. Por lo tanto, la persona que llama no esperaría errores por una ruta incorrecta o acceso denegado, sino una excepción por las cosas más complicadas que también podrían salir mal. Y documentarlo.El tío Bob da el siguiente ejemplo en su libro Clean Code . Siempre que esperemos que se produzca una excepción, podemos usar el
Try
prefijo del nombre de un método:Y luego (adaptado):
El
tryToShutDown
método no realiza ningún manejo de errores, porque es responsabilidad delsendShutDown
método.los
TryParse
patrón de Microsoft viola la directriz de código limpio que dice que debemos evitar los parámetros de salida.Si no estamos desarrollando una nueva versión de C #, no tenemos que cumplir con todas las pautas de Microsoft. A veces no son los mejores.
fuente