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 , setValueOrExceptionetc.
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
@returnou@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 respectedEste 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.TryParsee 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 Singlevs. SingleOrDefault, que está muito próximo OrNulldo OP sugerido.