Tenha mais qualidade de código C# com o uso de “Extensions Methods”

Marcio Nizzola
3 min readApr 10, 2019

--

A partir da versão 3.0 do C#, foi disponibilizada a funcionalidade chamada de “Extension Methods” (Métodos de Extensão), esta funcionalidade permite adicionar novos métodos para tipos existentes, sem a necessidade de criar um novo tipo derivado, recompilação ou modificação do método original.

Extension Methods, são métodos estáticos que podem ser chamados como se fossem métodos originais de um tipo de dado ou uma classe pré-existente.

Por exemplo, toda vez que nós precisamos formatar um tipo de dado “decimal” para ser exibido com um formato de dinheiro especificado em nosso projeto como padrão, teríamos que toda hora aplicar por exemplo um comando:

valor.ToString("###,##0.00")

Mas como toda hora isto pode tornar-se cansativo ou precisemos mudar este formato algum dia, para que isto não nos obrigue a modificar o programa inteiro, podemos simplesmente lançar mão do uso de um “extension method”.

Então, como fazer para criar um Extension Method ? primeiro crie uma classe estática no c# onde você irá escrever seus métodos.

Observe no código fonte, que a diferença do método está no fato de possuir o termo “this” que se refere ao tipo de dado que iremos realizar a extensão, caso a nossa classe esteja no mesmo namespace, ela será imediatamente incorporada ao tipo de dado associado como demonstra a figura abaixo:

Em casos em que você coloca sua classe que contém os Extension Methods dentro de pastas, faz-se necessário a referência deste namespace dentro da classe onde você utilizará o método.

Pronto, seu primeiro “Extension Method” está criado !

Mas não é só isto, há inúmeras possibilidades com esta funcionalidade, uma delas, é permitir que façamos códigos muito mais limpos escondendo toda a parte trabalhosa dentro de “extensions methods”, isto vale para cálculos, conversões de tipos, etc.

Isto mesmo, vamos varrer toda a sujeira pra baixo do tapete, criando códigos mais legíveis !!

Antes de sairmos criando Extensions Methods para tudo, vamos observar alguns detalhes:

  • Um Extension Method deve ser definido como um método de uma classe estática.
  • Um Extension Method com o mesmo nome e assinatura de um método já existente não será chamado.
  • Extension Methods não podem ser sobrescrever outros Extension methods.
  • O conceito de Extension Methods não pode ser aplicado à campos, propriedades ou eventos.
  • Não queira usar Extensions Methods para tudo, o uso excessivo de métodos de extensão não é uma boa prática de programação, use com sabedoria.

No próximo post estarei demonstrando como deixar métodos complexos mais legíveis com a utilização de “Extension Methods”.

Gostou do artigo? clique no ícone👏e me siga para ver as próximas publicações !!

--

--

Marcio Nizzola

Microsoft MVP | Software Architect na CI&T | Prof. da Etec Itu | Membro Fundador da Comunidade Itu Developers.