Na minha equipe, trabalhamos em estreita colaboração com alguns arquitetos de software. Eles aprovam todas as decisões de design de nossos projetos, fazem algumas revisões de código etc.
Nossos projetos consistem principalmente na funcionalidade de back-end implementada em PHP usando a estrutura Symfony 2. Então, sintaticamente, o código, as convenções de nomenclatura e a estrutura do projeto parecem quase idênticas à aparência do Java (o Symfony 2 incentiva essa estrutura). Estou mencionando isso porque convenções específicas de Java também se aplicam ao nosso caso (se possível).
Recentemente, eles sugeriram algo que eu acho muito estranho: todos os métodos devem ter conjunções em seu nome getEntityOrNull
, por exemplo , setValueOrException
etc.
Essa convenção de nomenclatura parece muito errada para mim, mas não posso apresentar argumentos concretos ou artigos / páginas on-line que especificamente contestem isso.
As únicas coisas que inventei são:
- tais informações devem estar presentes nas anotações do método, como
@return
ou@throws
- o uso de conjunções ("e", "ou" etc.) nos nomes dos métodos geralmente sugere que o Princípio de Responsabilidade Única não é respeitado adequadamente
Quais são outros argumentos concretos contra essa convenção de nomenclatura?
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
Este não é o caso dos exemplos listados, em que a conjunção é usada para esclarecer o mecanismo usado para lidar com falhas, não para indicar que ele pode fazer uma coisa ou outra. Até a função mais estritamente definida pode ter condições de falha legítimas, por exemplo, popping uma pilha vazia.
Int32.TryParse
e Int32.Parse
- ambos analisam uma string em um número inteiro, mas o primeiro retorna um Booleano indicando sucesso e o último gera falha.
Try...
, ...OrNull
, ...OrDefault
. @ EricLippert Essa não é a única convenção em .net. Considere Single
vs. SingleOrDefault
, que está muito próximo OrNull
do OP sugerido.