Olá.
Estou dando uma olhada na apostila de testes, xml e disgn patterns da Caelum e me deparei com a seguinte situação.
Eu tenho uma classe chamada Candlestick, que possui o seguinte construtor:
public Candlestick(double abertura, double fechamento, double minimo, double maximo, double volume, Calendar data) {
// Implementação do construtor
}
Como deu para perceber, este construtor é bastante extenso. Para resolver isto, um dos exercícios opcionais é criar um builder para este construtor. Desta forma, eu posso criar um Candlestick assim:
CandleBuilder builder = new CandleBuilder();
builder.comAbertura(10.0);
builder.comFechamento(20.0);
...
Candlestick candle = builder.geraCandle();
Em um determinado momento, a apostila orienta a criar um teste para a classe CandleBuilder. Teste este que deve levantar uma IllegalStateException no método geraCandle, responsável por criar um Candlestick, sempre que não forem chamados todos os setters desta classe, pois um Candlestick não pode existir sem que todos os valores sejam passados para seu constructor. A apostila até dá a sugestão de criar vários booleans para controlar se o setter já foi chamado ou não. Minha pergunta é: O mais correto (se é que existe mais correto neste caso) não seria criar um teste e implementar as verificações diretamente no constructor da classe Candlestick ao invés de fazer isto no método geraCandle da classe CandleBuilder? Digo isto pois, se eu vier a chamar este constructor de algum outro lugar mais adiante terei problemas e provavelmente terei de implementar duas vezes a mesma coisa.
Espero ter sido claro na minha dúvida. Agradeço a ajuda de todos.
Att.
