Mexendo nestes fontes do Flagship.... usei e ainda uso algumas ferramentas pra ajudar, e nem percebi.
Um ponto importante:
O computador é pra ajudar em tarefas repetitivas, isso inclui a tarefa de programação também.
Não é rápido ajustar aplicativos pra compilar usando -w3 -es2, pode levar meses, então aceleração é sempre bem útil.
Tem a formatação do fonte, muito programa antigo tá ruim nisso daÃ.
Uso meu formatador de fontes, mas se der uso o do Harbour, que vai mais fundo.
Em fontes antigos, ou de terceiros, uma tarefa difÃcil seria identificar entre variáveis e campos de arquivo.
Uma ajuda rápida pra isso é usar o Harbour.
Directory( "*.dbf" ) pra pegar a lista de arquivos, dbStruct() pra pegar nomes de campos dos arquivos, e gerar um CH com declarações FIELD.
Pelo menos isso já isola a maioria dos nomes de campos, exceto arquivos temporários, e reduz a quantidade de nomes pra dar atenção.
Também dá pra usar o Harbour pra adicionar a declaração PROCEDURE, se os fontes não tiverem isso, e um #include "lixo.ch", pra incluir a declaração acima, e outras declarações que possam ser interessantes. São declarações "quebra-galho", então melhor destacar que precisa ser removido depois.
Parecido com o anterior, e parecido com isto: Directory(), e hb_MemoWrit( arquivo, [#include "lixo.ch"] + hb_Eol() + [PROCEDURE ] + nome + hb_Eol() + MemoRead( arquivo ) )
As etapas que acho interessantes, que as etapas anteriores devem ajudar, seriam:
- formatar fonte
- compilar usando -m -n
Depois disso dá pra pensar no -w3 -es2
Também dá pra usar o Harbour pra ajudar mais nisso:
Uma vez que gerou CH pra campos de arquivos, talvez gerar pra variáveis..... como ? vasculhar o fonte?
Não... talvez baste pegar a saÃda do HBMK2/Harbour, que vai mostrar variáveis não declaradas.
Dá pra fazer isso, e ir acrescentando no lixo.ch os nomes com MEMVAR.
O ideal vai ser declarar LOCAL, mas mesmo usando MEMVAR, a ajuda é muuuito grande.
Uma dica no Harbour é usar o -ge1, que é uma lista de erros em formato "amigável"
Tudo declarado, e dentro do lixo.ch, é possÃvel que dê pra compilar usando -w3 -es2
A próxima etapa pode se tornar mais simples:
vai ser apagar um MEMVAR de cada vez do lixo.ch, e já resolver aquela variável para o aplicativo inteiro.
Pode precisar recompilar várias vezes, sem problemas, melhor o computador ter trabalho do que você.
Também pode fazer isso em um fonte de cada vez.
Pode ser interessante ver o resultado em alguns fontes, antes de partir pra alteração em massa.
Também pode criar fontes pra ajudar a mexer nos fontes !
De repente encontra trechos que se repetem em vários fontes, e quer trocar todos de uma vez.
Mesma coisa... Directory()... cTxt := MemoRead( arquivo ); cTxt := StrTran( cTxt, "de", "para" ); hb_MemoWrit( arquivo, cTxt )
Lembre-se de criar backup, ou usar um gerenciador de fontes como o GIT, para o caso de fazer besteira e precisar retornar o fonte anterior.
E é sempre bom começar pela formatação do fonte, porque isto considera que TODO o fonte foi alterado, e isto ficando em primeiro lugar, nas próximas alterações vai mostrar o que realmente vai estar alterando no fonte, e vai ser melhor de acompanhar as etapas seguintes.
No caso dessa parte automática, de declarações, é esperado que pode haver campos com mesmo nome de variáveis, e gerar problemas.
Tudo bem... o que der pra fazer automático vai ajudar, se não puder tudo, pelo menos uma parte, ou nenhuma, pelo menos tentou...
Pode acrescentar #pragma -w0 #pragma -es0 em todos os fontes, e depois ir eliminando um por um e ajustando um por um pra -w3 -es2.
Isso cansa... quando cansar, compile com -e0 -es0, e deixe pra continuar em outro dia.
Mas é bom no começo fazer um fonte de cada vez, assim pode ir encontrando mais coisas que poderiam ser alteradas.
Mas... não queira alterar tudo de uma vez: ao tirar o foco de um tipo de alteração, isso pode fazer perder até mais tempo...
Pode ser mais interessante alterar uma coisa de cada vez, assim aquele tipo de coisa fica resolvido.
Senão... pode acumular problemas ao invés de soluções.
Até que o Programmers Notepad ajuda muito nisso, ao configurar pra funcionar igual IDE.
Ele mostrando a lista de erros pra poder clicar... é bem prático.