Lembro-me de aprender VB4 e arrastar um botão para um formulário, clicar duas vezes nesse botão e digitar o código no manipulador de eventos com o qual eu havia sido magicamente abençoado. Vindo do QBASIC, fiquei emocionado com o "V" em "VB", o designer visual era literalmente a melhor coisa desde o pão fatiado.
É claro que você poderia fazer tudo isso de forma programática, mas a magia do "V" era tão atraente que você não podia deixar de arrastar esse botão. Fomos encorajados a seguir esse caminho.
Mas, há alguns anos, comecei a aprender sobre C # e a estrutura .net e fiquei fascinado com a maneira como tudo o que eu pensava que sabia sabia acabara de sair pela janela. Há muita mágica acontecendo no VB6 que é completamente revelada no .net: considere os construtores e o InitializeComponents
método, por exemplo. Neste último, você encontrará todas as instâncias de controle que você arrastou da caixa de ferramentas, todos os eventos que você registrou e as propriedades que definiu no designer.
E tudo bem ... eu acho. É que, sinto que não sou o dono do que está acontecendo, esse código que só posso modificar através do designer me incomoda. Toda vez que você copia um botão que diz "Ok" de um formulário para outro (às vezes junto com o irmão "Cancel"), na verdade você está duplicando o código, e isso é pecado, não é? SECA, não se repita, diz o papa .
Religiões e escolas de pensamento à parte, com toda objetividade, não deveríamos derivar formas de formas básicas e deixar o botão "Ok" (e todos os seus amigos) viver na forma base? Algo como a FormBase
do qual deriva a DialogFormBase
; todas as classes criadas em pouco tempo ... digitando código. Os botões são criados dependendo de como a classe é instanciada (isto é, um argumento enum do construtor determina quais botões devem ser criados), os controles são definidos dentro de um arranjo de painéis divididos e painéis de layout de fluxo, injetados no formulário comoContent
que se encaixa no painel de conteúdo principal. Não é isso que o ASP.net faz com páginas mestras e espaços reservados para conteúdo? Eu derivaria um formulário quando precisar de uma nova "página mestre", mas essa nova "página mestre" ainda deriva de uma classe de formulário base, para que os visuais sejam consistentes em todo o aplicativo.
Para mim, é muito mais reutilização de código do que qualquer outra coisa que já fiz com o designer no WinForms, e nem foi difícil, e o código não é confuso com um método de 200 linhas que não tenho controle, posso colocar comentários onde eu quiser, eles não serão substituídos por um designer. Eu acho que é apenas uma questão de padrões e arquitetura, que foi o que me levou a este link: Melhor design para formulários do Windows que compartilham funcionalidades comuns , onde eu percebi que estava no local, exceto a resposta, sugere exatamente o que eu sou mas aconselha contra a herança de formulários devido a considerações do designer. Essa é a parte que eu não entendo .por causa de considerações de estrutura de código, especialmente no que diz respeito à herança de forma e controle, que não vejo outra razão para evitar além de quebrar o designer .
Não podemos todos ser apenas preguiçosos, então que parte estou perdendo?