Oi pessoal,
estou estudando sobre DSLs e tive uma idéia: colocar variaveis de instância apontando para a instância em questão para melhorar a sentença, por ex:
A sentença ficou bacaninha, como pode ser visto no meu exemplo:
[code]public class ExpressionTest {
private Expression test;
private Algo ok = new Algo() {
public void execute() {
Assert.assertTrue(true);
} };
private Algo error = new Algo() {
public void execute() {
Assert.assertTrue(false);
} };
@Before
public void setUp() throws Exception {
test = new Expression();
}
@After
public void tearDown() throws Exception {
}
@Test
public void testSeSenaoConditionWhenSeIsTrue() throws Exception {
test.se(1 == 1)
.entao
.faz(ok.com.parametros("xxx"))
.senao
.se(true)
.entao
.faz(ok)
.senao
.faz(error);
}
@Test
public void testSeSenaoConditionWhenSeIsFalseShouldDownOnSenao() throws Exception {
test.se(1 == 2)
.entao
.faz(error)
.senao
.faz(ok);
}
}[/code]
Sim, eu sei que neste exemplo daria para fazer coisas do tipo: senao.entao.senao.faz(… , mas isso poderia ser resolvido com um encapsulamento mais bem definido, a questão é
o que acham desta idéia? Pros X contras ?
[]s