DSLs - Sentença mais clara.. idéia!

0 respostas
peerless

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:

public DSL entao = this;

A sentença ficou bacaninha, como pode ser visto no meu exemplo:

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);
	}
	
}

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

Criado 8 de janeiro de 2009
Respostas 0
Participantes 1