7 de mai. de 2009

Importância da customização de controles(.NET)

Controles customizados, geralmente, são deixados de lado pelos arquitetos, pois nem sempre é evidente que futuramente, possa haver uma adição funcional no Control Padrão.

Com o avanço das tecnologias e a Orientação a Objetos, vemos a oportunidade de criar controles com certa simplicidade e produtividade.

Mas o que justificaria customizar controles já prontos, como o TextBox, ListBox, DropDownList?

Este é o assunto que irei abordar nesta postagem.

OBS: usarei aqui como base os controles do ".NET" como base, pois não tenho conhecimento a fundo de outras tecnologias.


Justificativas

Os controles do .NET são bastante funcionais e todos eles herdam de uma única classe base(Control).

Vamos usar o TextBox(WebControl) para exemplificar as justificativas.

Supondo que tenha desenvolvido um sistema que da e-commerce, e para isto eu tenha utilizado um controle do tipo TextBox para o que o usuário possa digitar a quantidade de em determinado item do pedido.
Que problemas podem ocorrer com o uso do TextBox do .NET?

Bom, este controle é ótimo, mas não possuí um bloqueio ou máscara para impedir o usuario de digitar um caracter inválido no conteúdo do componente. E que talvez este bloqueio fosse importante para os usuários(Clientes), até para que antes de clicar em comprar isto seja impedido ao invés de validado.

Quando isso for alterado, se não tiver sido criado um controle customizado, teríamos que criar uma função javascript e adicioná-la em cada página, seja com um arquivo js ou uma função adicionada diretamente na página, e ainda teríamos que, em todos os TextBox que necessitam desta validação, adicionar o atributo com a chamada para a função. E tudo isso com muita separação, dificultando a manutenção do código.

Desta maneira você gera mais demanda para a empresa ? Gera mais valor ? Pois é será que a manutenção de aplicativos é rentável? Esta é uma grande pergunta, mas também é assunto para outra postagem.

Mas para seguirmos as melhores práticas adotaremos a resposta de que não seria rentável.

E ai teríamos que criar um time ou uma quantidade de horas absurda para fazer a mesma alteração em lugares diferente, para uma evolução tão simples como mudar um campo de Texto que permita o tratamento de alfanuméricos.

Sendo que a criação de ou apenas a herança de alguns componentes é tão produtivo quanto é recomendável, vale a pena, principalmente, em um projeto de médio a grande porte a Customização de controles.

Abaixo alguns códigos de exemplo:
//Exemplo Simples
public class SimpleCompositeControlDesigner : CompositeControlDesigner
{
public override bool AllowResize
{
get
{
return false; }
}
}

//Exemplo simples de herança
public class SimpleText : TextBox
{
}

Nenhum comentário: