ESTA É UMA BOA PR?TICA ?
Tenho uma dúvida simples.
Digamos que tenho uma aplicação VB.NET .
Nesta aplicação,eu tenho um formulário(Form1),'com 5 botoes.
Cada botão, no evento Click,executa um método(CalcularResultado)
de uma mesma classe (ClCalcular).
Do ponto de vista das boas práticas, o correto é:
1.) No evento Click de cada botão, instanciar a classe (ClCalcular)
e executar o método ( CalcularResultado) ?
2.) Criar um módulo separado,e neste módulo criar uma variável pública
para representar a classe (Public ClCalc As New ClCalcular) e depois
usar esta variável nos botões, para não precisar instanciar a classe
em cada botão do formulário?
Obs: Eu sei que funciona de ambos os modos. Mas,até onde sei linguagens
como C# (Não tenho certeza), não permitem criar módulos separados
para definir variáveis públicas como no VB.NET.
O segundo modo que citei, economiza código.Mas,gostaria de saber se
esta de acordo com as boas práticas para projetos Orientados a objetos.
Agradeço qualquer orientação
Citação:1.) No evento Click de cada botão, instanciar a classe (ClCalcular)
e executar o método ( CalcularResultado) ?
Nesse caso eu prefiro instanciar a classe criando um objeto fora de qualquer evento da classe do form. Assim posso usar esse objeto em todos os botões sem instanciar em cada um:
Dim calcular As New ClCalcular()
Private sub button1_click()
calcular.metodo_publico_a_chamar()
end sub
em c#
ClCalcular calcular = new ClCalcular();
private void button1_click(){
calcular.metodo_publico_a_chamar();
}
Citação:Obs: Eu sei que funciona de ambos os modos. Mas,até onde sei linguagens
como C# (Não tenho certeza), não permitem criar módulos separados
para definir variáveis públicas como no VB.NET.
O segundo modo que citei, economiza código.Mas,gostaria de saber se
esta de acordo com as boas práticas para projetos Orientados a objetos.
Olha até onde me lembro no c# só trabalhamos com classes. Aà você tem que entender sobre métodos e atributos: privados, públicos, estáticos, etc...
Para responder essa pergunta, é necessário primeiramente conhecer o funcionamento da sua classe.
Se ela fizer conexão com banco de dados, usar arquivos externos, trabalhar com imagens, etc... (Coisas que exigem implementação da interface IDisposable, ou teoricamente, deveriam exigir). O lance é instanciar em cada botão (ou então fazer uma chamada de uma subrotina intermediaria, de modo que você não precise repetir código).
Eu não gosto de colocar variáveis no escopo do formulário por questão de facilitar código, como nesse caso. é melhor usar uma subrotina intermediária, como falei acima.
Deve ter em mente, que o escopo de uma variável depende do contexto dela, e não simplesmente porque ela aparece em vários trechos do formulário. Claro, existem casos onde vale a pena fazer isso pelo fato de criar uma nova instância ser muito custoso... mas são casos especÃficos.
Não existe muito a necessidade de variáveis públicas em módulos. é algo que deve ser usado em casos especÃficos.
Sobre o C# não possuir módulos.... Você consegue o mesmo resultado utilizando variáveis estáticas públicas. Mas não é recomendado para esse tipo de coisa.
Se ela fizer conexão com banco de dados, usar arquivos externos, trabalhar com imagens, etc... (Coisas que exigem implementação da interface IDisposable, ou teoricamente, deveriam exigir). O lance é instanciar em cada botão (ou então fazer uma chamada de uma subrotina intermediaria, de modo que você não precise repetir código).
Eu não gosto de colocar variáveis no escopo do formulário por questão de facilitar código, como nesse caso. é melhor usar uma subrotina intermediária, como falei acima.
Deve ter em mente, que o escopo de uma variável depende do contexto dela, e não simplesmente porque ela aparece em vários trechos do formulário. Claro, existem casos onde vale a pena fazer isso pelo fato de criar uma nova instância ser muito custoso... mas são casos especÃficos.
Não existe muito a necessidade de variáveis públicas em módulos. é algo que deve ser usado em casos especÃficos.
Sobre o C# não possuir módulos.... Você consegue o mesmo resultado utilizando variáveis estáticas públicas. Mas não é recomendado para esse tipo de coisa.
Citação:Obs: Eu sei que funciona de ambos os modos. Mas,até onde sei linguagens
como C# (Não tenho certeza), não permitem criar módulos separados
para definir variáveis públicas como no VB.NET.
Essa informação procede (aproveitando o tópico)?
Até onde está a diferença das linguagens? Existe alguma lista dessas coisas????
Muito obrigado pessoal !
Tópico encerrado , respostas não são mais permitidas