• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sir Pereira

Funções

7 mensagens neste tópico

Boas pessoal,

se é coisa que eu nunca utilizei muito, foram as funções, isto porque "nunca soube" como as organizar.

Isto é, imaginem que para ter o código mais limpo, quero separar as funções do resto do código, mas isso não era suposto pôr as funções em classes? E a partir daí poder utilizá-las em qualquer sítio do código principal?

Alguém me explique, pois ainda não consegui fazer isto :)

Abraço ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não precisam de estar em classes diferentes.

Imagina o seguinte:

Na mesma classe, digamos, um form, tens 20 textboxes que precisas de activar ou desactivar em muitos pontos na tua lógica.

Tradicionalmente, terias de escrever os 20 Enabled=True ou Enabled=False sempre que precisasses.

Se tiveres, na mesma classe, um bloco de código único que aceite um argumento boolean, por exemplo, bastaria escrever todos os enabled=argumento uma única vez.

A partir daí, sempre que precisasses de activar fazias apenas ActivaDesactivaMinhasTextBoxes(True) e para desactivar ActivaDesactivaMinhasTextBoxes(False).

É mais uma questão de reutilização de código (e consequente arrumação e organização) do que outra coisa.

Se as funções ou subs estiverem numa classe, é mais bonito chamar-lhes métodos. Terás de pensar neles como acções, uma acção que determinada classe faz internamente e que pode e precisa de ser chamada um milhão de vezes.

Se queres métodos que estejam disponíveis em qualquer ponto do código, estás à procura de métodos estáticos (aqui no VB chama-se "Shared").

Para escolheres entre uma sub e uma function tens apenas que fazer a pergunta a ti mesmo:

"O que este método vai processar, devolve algum resultado?"

Se a resposta for positiva, procuras uma FUNCTION.

Se a resposta for negativa, procuras um simples SUB

Avança para uma pergunta mais específica pois este é um assunto com pano para mangas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por acaso, após pesquisar aqui um bocadinho, consegui perceber aqui mais umas coisitas :)

Já percebi porque é que não conseguia aceder à função da minha classe ;)

Primeiro, tem que se declarar a classe no Form como nova, e só depois aceder-lhe.

Pensei que como estava no mesmo projecto, conseguia aceder directamente, tal como se consegue a outros forms :thumbsup:

Penso que já estou bem orientado, vamos lá ver ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para acederes sem instanciar, tens de usar as "Shared" que te falei.

Ex:

Public Shared Function FazQualquerCoisa(E_toma_um_argumento As String) As String
End Function

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para acederes sem instanciar, tens de usar as "Shared" que te falei.

Ex:

Public Shared Function FazQualquerCoisa(E_toma_um_argumento As String) As String
End Function

E isso teria alguma desvantagem no seu uso ou é só vantagens ? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu diria que, para o que servem, não têm desvantagens.

Math.Round é um bom exemplo de uma shared function que deves usar uma série de vezes sem dares por ela ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu diria que, para o que servem, não têm desvantagens.

Math.Round é um bom exemplo de uma shared function que deves usar uma série de vezes sem dares por ela ;)

Possivelmente :thumbsup:

Bom, qualquer questão vou adicionando aqui :)

Obrigado ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora