En mi equipo, trabajamos en estrecha colaboración con algunos arquitectos de software. Aprueban todas las decisiones de diseño de nuestros proyectos, hacen algunas revisiones de código, etc.
Nuestros proyectos consisten principalmente en la funcionalidad de backend implementada en PHP utilizando el marco de Symfony 2. Entonces, sintácticamente, el código, las convenciones de nomenclatura y la estructura del proyecto se ven casi idénticos a lo que sería Java (Symfony 2 fomenta dicha estructura). Menciono esto porque las convenciones específicas de Java también se aplican en nuestro caso (si es posible).
Recientemente, sugirieron algo que me parece muy extraño: todos los métodos deben tener conjunciones en su nombre getEntityOrNull
, por ejemplo , setValueOrException
etc.
Tal convención de nomenclatura me parece muy incorrecta, pero no puedo presentar ningún argumento concreto o artículos / páginas en línea que lo desafíen específicamente.
Lo único que se me ocurrió es:
- dicha información debe estar presente en las anotaciones del método, como
@return
o@throws
- El uso de conjunciones ("y", "o" etc.) en los nombres de los métodos generalmente sugiere que el Principio de Responsabilidad Única no se respeta adecuadamente
¿Cuáles son algunos otros argumentos concretos contra esta convención de nomenclatura?
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
Este no es el caso de los ejemplos que enumeró, donde la conjunción se usa para aclarar el mecanismo utilizado para manejar fallas, no para indicar que puede hacer una cosa u otra. Incluso la función más definida puede tener condiciones de falla legítimas, por ejemplo, abrir una pila vacía.
Int32.TryParse
y Int32.Parse
- ambos analizan una cadena en un número entero, pero el primero devuelve un Booleano que indica éxito y el segundo arroja el fracaso.
Try...
, ...OrNull
, ...OrDefault
. @EricLippert Esa no es la única convención en .net. Considere Single
vs. SingleOrDefault
, que está muy cerca OrNull
del OP sugerido.