Jump to content
Sign in to follow this  
Bruno

[Geral] Variáveis - Conceito de Expanção e Tempo de Vida

Recommended Posts

Bruno

Gostava de saber as vossas opiniões sobre o seguinte artigo q escrevi:

Na programação é muito comum o uso de variaveis no entanto não é normal as pessoas preocuparem-se com a extensão e tempo de vida da mesma!

extensão e tempo de vida são as palavras que encontrei para traduzir "SPAN" e "LIFE TIME"!

A extensão de uma variavel pode ser medida através do numero de linhas desde a sua ultima utilização até a uma nova utilização...

1: int a;
2: int b;
3: a = 3;
4: int c;
5: c = a * 2;
6: c = a + c;
7: b = c;

Neste exemplo a variavel "a" é definida na linha 1 e é usada na linha 3 e na linha 6! A sua 1ª extensão é de 1 linha (declarada na 1 usada na 3). Ja a 2ª extensão é de 2 linhas... o que faz uma media da extensão da variavel "a" de 1,5 linhas! (valores destes sao aceitaveis)

Vejemos agora o caso do "c"... da declaração para a sua primeira utilização não existe nenhuma linha! O mesmo acontece entre a linha 5 e 6! Diz-se que a variavel "c" tem uma extensão de 0 linhas! (ideal)

No caso do b... existe uma extensão de 4 linhas totalmente desnecessária!

Portanto ajustando o programa:

1: int a = 3;
2: int c = a * 2;
3: c = a + c;
4: int b = c;

Torna-o mais legivel e com uma extensão inferior! :D

O que podemos concluir disto é que as variaveis devem ser inicializadas na sua declaração e além disso, devem ser declaradas perto da sua primeira utilização!

O tempo de vida de uma variavel pode ser medido pelo numero de linhas que vão desde a sua declaração até à sua ultima utilização!

1: int a=1;
2: int b;
....
6: a++;
...
11: a = b;
...
16: a++;

Neste exemplo temos uma extensão de "a" de 4 linhas por 3 vezes e porem o seu tempo de vida é de 15 linhas! Portanto, embora a extensão tenha que ser mais pequena que o tempo de vida não há nenhuma outra relação entre as duas!

Diminuir o tempo de vida de uma variavel trás algumas vantagens como: para quem está a ler o codigo não precisa de andar a fazer scroll para cima e para baixo a ver os valores que a variavel tinha antes; o facto de a usar ao longo de muitas linhas pode ser um indicio de que a variavel está a ser usada para muitas coisas.

Uma variavel deve ser usada com um unico propósito. O reaproveitamento de variaveis aumenta o tempo de vida e a sua extensão tal como torna pouco explicito qual o seu objectivo, isto é:

int bolas = 20;
int bonecas = 4;
int miudos = 5;
int miudas = 2;
int temp;

temp = bolas + bonecos;
...

temp = miudos + miudas;
...

N seria mais legivel se fosse antes:

int bolas = 20;
int bonecas = 4;
int miudos = 5;
int miudas = 2;

int numBrinquedos = bolas + bonecas;
...

int numPop = miudos + miudas;
...

Portanto as variáveis devem ser criadas com um unico fim!

Dito isto é perceptivel porque não se aconselha a usarem variaveis globais (teriam uma extensão e um tempo de vida enormes).

Variaveis locais existem para serem usadas! :)

for(int i = 0; i < MAX_STRING; i++) {
...
}

Uma variavel declarada assim "morre" após o ciclo! (algumas linguagens não permitem este tipo de "técnicas")

Em média uma variavel não deve ter mais que 6 linhas de extensão nem mais de 20 de "vida". :P

----

Baseado no Code Complete, um livro muito conceituado nos dias de hoje.

O Code Complete tem como objectivo aperfeiçoar a performance, a qualidade e legibilidade do código desenvolvido por um programador nas várias linguas que abrange (Visual Basic, C, C++, Java, etc...)

Share this post


Link to post
Share on other sites
deathseeker25

Grande artigo. Algo em que nunca tinha pensado.

É bom ver destes artigos vindos de universitários. Dá sempre para aprender bastante.

Cumps

Share this post


Link to post
Share on other sites
vbmaster

Nunca tinha pensado nisso por acaso.

A minha compreensão de 10 horas da noite demorou um pouco a perceber isso :P

Mais uma maneira de serem 1337's a programar, bom post :P

Fiquem bem :D ;):)

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.