PUBLIC
Talvez o primeiro tipo de variável dos tempos do dBASE II, não lembro mais....
A variável é visÃvel no aplicativo inteiro.
Se usar tudo PUBLIC, vai ter que ficar inventando nomes, até acabarem os nomes disponÃveis.
Existe limite pra variáveis do tipo PUBLIC. Talvez no Harbour não, não sei dizer...
Ela fica visÃvel no aplicativo inteiro.
Tá sempre ocupando memória.
Não se destrói sozinha.
Tem rotinas antigas que transportam os campos de arquivo pra variáveis, pra "facilitar" para programadores preguiçosos (chamar assim, porque NÃO É PRA USAR).
Na prática ela só complica, só facilita mesmo pra ler/salvar conteúdo, mas na minha opinião mais atrapalha do que ajuda.
FUNCTION LoadVars()
FOR nCont = 1 TO FCount()
cCampo := FIeldName( nCont )
cVariavel := "M" + cCampo
PUBLIC &cVariavel
&cVariavel := &cCampo
NEXT
RETURN NIL
FUNCTION SaveVars()
FOR nCont = 1 TO FCount()
cCampo := FieldName( nCont )
cVariavel := "M" + cCampo
REPLACE &cCampo WITH &cVariavel
NEXT
RETURN NIL
Isso cria variáveis públicas para o arquivo aberto, rotinas pra ler e salvar, ok.
Mas É PROBLEMA.
Tá pensando que tá facilitando a vida, mas só está complicando.
Ainda mais no Clipper, que tem limite. Vai ter problemas e nem vai saber o porque.
Há limite na criação de variáveis públicas. Isso cria variáveis sem fim, então hora ou outra acaba em problema.
Fora isso, fica sem controle sobre que variáveis existem no fonte, ou nos fontes, já que pode criar em um lugar e usar em outro.
Também está aà justamente o problema de variável pública:
É uma variável que você cria não se sabe onde, e vai usar não se sabe onde.
O que acontece com seus fontes:
Passa a ter variáveis que você não sabe de onde vém, não pra onde vai, e não sabe nem mesmo se realmente precisa delas.
Entendeu o problema causado?
É manter variáveis que nunca se sabe se pode apagar do fonte ou não, porque pode usar ou não.
É dar chances para "desaprender".
Agora imagine 20 anos usando isso...
20 anos acostumado a ter variáveis que não sabe se pode apagar...
É acostumar a fontes que não sabe mexer, que tem coisas que não sabe se serve pra alguma coisa, etc.
É desaprender... é acostumar a ter coisas que não precisa no fonte... é desaprender tanto, que chega uma hora que acha que tá velho, que não entende mais nada...
Pois é... é difÃcil acreditar que um recurso da linguagem possa estragar o programador.
Ela é útil... sim, com certeza, há casos onde precisamos dela.
Mas não é uma regra. Não é pra usar sempre, é pra evitar, e usar somente quando não houver outra alternativa.
É exatamente isso.
E a variável pública pode ser criada em qualquer parte do aplicativo, qualquer rotina.
De repente, usando a rotina acima, vai acabar tendo nome repetido de variável pública sem perceber, afinal qualquer arquivo pode ter qualquer nome de campo e gerar qualquer nome de variável.