Extension Methods e legibilidade de código

Como o assunto DSL (Domain Specific Languages) ainda promete dar muito o que falar, parece que a gente fica cada dia mais influenciado pela tendência de deixar o código o mais próximo possível da linguagem de negócio.

Hoje, enquanto escrevendo um pequeno código de exemplo, acabei criando o seguinte teste:

[Test]
public void Aluno_DeveriaReceber100PorcendoDeGratuidadeCasoTenhaRendimentoAcimaDe90PorCento()
{
ConfiguracoesDoSistema.TipoDeGratuidade = TipoDeGratuidade.RendimentoAcademico;

Aluno bomAluno = new Aluno(“Bom Aluno”);
bomAluno.RendimentoAcademico = 95.Porcento();

Assert.AreEqual(100.Porcento(), bomAluno.GratuidadeConcedida.Valor);
}

Notem o uso da construção 100.Porcento(). Ela é possível através da utilização dos Extension Methods do C# 3.0. O código para gerar o extension method “Porcento” ficaria assim:


namespace Domain
{
public static class MyExtensionMethods
{
public static double Porcento(this int valor)
{
return (double)valor / 100;
}
}
}

O código do teste poderia estar ainda mais claro, isto é, sem interferências geradas pela sintaxe da linguagem, caso o C# suportasse o conteito de “Property Extensions”.
Se isso existisse, poderíamos escrever algo do tipo:

bomAluno.RendimentoAcademico = 95.Porcento;

De qualquer forma, ainda não estou convencido de que este código é mais legível. O que você acha?

ASP.NET 3.5 Extensions Preview

Como sempre, a noiva chega atrasada…

As funcionalidades, na minha opinião, mais excitantes da nova leva de ferramentas
para desenvolvedores da Microsoft não desembarcou com o Visual Studio 2008. Veio um
pouco depois:

3 novas funcionalidades que quero muito explorar com detalhes:

– ASP.NET MVC (finalmente uma alternativa da Microsoft ao Web Forms)

– ADO.NET Data Services (antigo projeto “Astoria”) 

– Entity Framework

Para mais informações e download, visite http://asp.net/downloads/3.5-extensions/

Esperem ver posts sobre esses assuntos em breve aqui.