ESTA É UMA BOA PR?TICA ?

MARCOS 23/08/2016 15:42:17
#466099

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






ACCIOLLY 23/08/2016 17:53:12
#466103
Resposta escolhida
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...
DS2T 23/08/2016 22:35:49
#466111
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.
EPISCOPAL 24/08/2016 09:38:10
#466124
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????
MARCOS 24/08/2016 14:40:11
#466135
Muito obrigado pessoal !
Tópico encerrado , respostas não são mais permitidas