Olá, pessoal.
Estou escrevendo uma classe que no final de tudo será transformada em um web service. Ela se parece muito com o cenário abaixo:
Class Classe {
public void metodo1() { ... }
public String metodo2() { ... }
public Tipo[] metodo3() { ... }
}
Essa classe pode gerar alguns erros que por sua vez podem ser facilmente tratados pela aplicação (exemplo: o tipo de registro que o usuário tenta mexer não existe) . Desse modo, resolvi transformar todos os métodos para retornar um int, que é zero em caso de sucesso ou o código de erro caso ocorra um erro que a aplicação deve tratar. Caso algum erro inesperado aconteça (ex.: erro de infra-estrutura), uma Exception é lançada.
Desse modo, é bem fácil transformar o método1 para retornar um int com o código de erro. Mas os outros métodos precisam que eu crie classes apenas para transportar esse novo resultado que passará a ser composto. Por exemplo, o método 2 não mais retornará um String mas sim um tipo Metodo2Response, que se parece com isso:
Class Metodo2Response {
private int returnCode;
private String value;
// getters e setters
}
Essa solução, apesar de válida, gera uma certa inconsistência, pelo menos até onde eu posso ver: metodo1() retorna int com um código de sucesso ou erro; metodo2() e metodo3() retornam tipos complexos, que contêm o código de erro dentro deles…
Vale a pena fazer com que método1 também retorne um tipo complexo que contem somente um int com o código de retorno? Existe algum outro padrão ou método de resolver esse tipo de problema de forma limpa?