Existe alguma regra de boas maneiras que indique qual deva ser a melhor opção? Por exemplo, tenho um método que preenche um dos atributos da entidade Pessoa, poderia ser dessas duas formas:
As duas preenchem o objeto passado por parâmetro.
Mas uma não retorna nada e a outra retorna o próprio parâmetro.
Utilize aquela que melhor atender sua necessidade.
Dragoon2 likes
Eu vou mais fundo um pouco!
As duas maneiras são ruins já visto que Pessoa consequentemente deve ter setNome então não precisa desse método só para fazer isso …
Os exemplos são ruim, talvez, você precisa fazer algo quase igual, semelhante, mas, que tenha um contexto e fundamento dito.
Desse jeito que está não precisa, um void e outro retorno de tipo tudo vai depender do que é necessário e também saber o que está fazendo.
Tem um exemplo mais real ou é isso mesmo? (geralmente o pessoal nunca coloca o exemplo que deve ser colocado)
A
Solucao aceita
AbelBueno3 likes
Nesse caso eu daria preferência a versão com void.
Retornando o objeto pessoa você pode gerar dúvidas para o chamador dessa função. Qual seria a forma de usar isso? A pessoa retornada é sempre a mesma pessoa passada como parâmetro?
O certo é usar a pessoa retornada pelo método ou usar a mesma pessoa passada para função?
Com sua implementação, tanto faz, mas isso gera uma dúvida desnecessária a quem usa seu código.
Esse estilo é geralmente usado quando você faz encadeamento de método, mas nesses casos você não passa o próprio objeto da cadeia por parâmetro.
staroski
Ótima colocação!
Eu por exemplo tenho o hábito de fazer meus setters retornarem a instância da própria classe, para fazer chamadas encadeadas ao inicializar objetos.
Isso quando eu não crio um builder… Mas cada caso, é um caso.
F
falks
Não estou com esse problema, apenas surgiu a dúvida, por isso fiz esse exemplo tão simples e feinho, mas acredito que um exemplo melhor seria da seguinte forma:
Existe uma entidade chamada Estudo, onde temos várias informações, incluindo uma lista de valores para esse estudo.
Em determinado momento na camada de negócios precisamos fazer o cálculo desses valores, onde teremos várias situações a ser analisadas.
Nesse caso, qual seria o melhor uso, retornar o estudo com a lista de valores já calculados, ou carregar no objeto a lista de valores?
F
falks
Encadeamento de método é exatamente o que o builder faz? por exemplo: