Clipper On Line • Ver Tópico - Compilação -w3 -es2

Compilação -w3 -es2

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Compilação -w3 -es2

Mensagempor JoséQuintas » 30 Set 2020 12:44

Acabei de pensar numa explicação legal sobre essa compilação.

Imagine alguém puxando sua orelha toda vez que fizer uma coisa errada.

Como é no começo do uso:

Muitos alertas, seus fontes fazem muita coisa errada, esse alguém tá te puxando a orelha por tudo que fez de errado até hoje
Várias vezes, talvez nem entenda direito porque esse alguém está puxando sua orelha, apenas vai fazendo o que esse alguém pediu.

Conforme vai usando....

De tanto esse alguém puxar sua orelha, todo dia e toda hora...
VOCÊ começa a entender o porque, e apenas considera: "é mesmo, esqueci disso..."

E com o tempo....

Já sabe que precisa e porque, então já faz antecipado.
E é justamente aí que você virou um craque: está se antecipando aos possíveis problemas

Então....
Eu percebi que isso aconteceu comigo.
No começo eu fazia só por fazer, só pra funcionar a compilação -w3 -es2, só porque disseram que seria melhor assim.
Percebi que muitos tipos de erro começaram a desaparecer.
Gostei do resultado, então fui procurando entender o porquê de outros erros, e qual seria a melhor solução.
A melhor solução era sempre que possível, declarar variáveis LOCAL, ou receber por parâmetro, pra já se tornarem LOCAL, ou por referência quando queria o conteúdo alterado (ao invés de PRIVATE).
Com o tempo, os resultados foram sendo cada vez melhores.

E o que acabei percebendo, é que isso não mudou só os fontes... isso mudou a mim mesmo.

Pense bem:
Esse alguém que "puxa sua orelha", é como se fosse um professor particular, 24 horas por dia te ajudando.
24 horas por dia "puxando sua orelha", com certeza o tempo vai fazer você aprender mais coisas, nem que seja pra não ter a "orelha puxada".
Se você acostuma a fazer fonte pra não "puxarem sua orelha", significa que você está acostumando a fazer certo, está se antecipando aos erros.
E quem faz isso é o que? é um bom programador.

Então... tente fazer uma forcinha pra usar compilação -w3 -es2.
Não precisa resolver tudo num dia, é impossível, e é muito provável que ainda não tenha conhecimento pra resolver tudo de uma vez.
Apenas use, uma vez, uma única tentativa de compilação, resolva apenas UM erro da compilação uma única vez.
Comece por aqueles fontes minúsculos, de poucas linhas, poucas variáveis, apenas vá fazendo quando tiver tempo.
Apenas não desista, vai fazendo o pouco que puder, na hora que puder.
NÃO é obrigatório fazer tudo de uma vez, pode compilar -w3 -es2 pra resolver um único alerta, e depois voltar ao uso normal.
Com o tempo, a "mágica" vai acontecendo.

Importante:
Comece pelos primeiros erros, e não pelos últimos.
É que se não declarou uma variável, por exemplo, vai dar erro em tudo que é lugar que usa a variável.
Resolvendo o primeiro erro, já resolveu todos que vém depois sobre essa variável.
E, geralmente, a criação da variável vém antes do uso, então o normal é que o primeiro erro seja exatamente no primeiro uso dela.
Por exemplo, nTotal := 0, antes de começar a fazer a soma, Resolvendo sobre nTotal, resolve toda soma que vém depois.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Compilação -w3 -es2

Mensagempor Fernando queiroz » 30 Set 2020 17:24

nesta migração para MARIADB passei a usar -w3 -es2 geral e resolveu muitos problemas, passei declarar as variáveis Local e passar por parâmetros , parece que o sistema esta rodando mais rápido, pode ser somente impressão

e ele fica te puxando a orelha para erros bobos que antes aconteciam, gostei muito e recomendo
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Compilação -w3 -es2

Mensagempor rossine » 01 Out 2020 18:13

Olá,

O certo seria usar este estilo de compilação em todos os fontes do sistema, mas igual no meu caso que tenho muitos fontes, apartir do momento que fiquei sabendo deste recurso, passei a usar nos novos fontes a opção abaixo para poder usar este recurso em casos específicos:


//CONTAS01.PRG

#pragma /w3   // de 0 a 3
#pragma /es2  // de 0 a 2

function Baixa_etc

...

return NIL



Isto é interesante para ir migrando e corrigindo os fontes antigos aos poucos.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Compilação -w3 -es2

Mensagempor JoséQuintas » 01 Out 2020 18:36

Eu achei interessante um programador não saber sobre uma coisa:

LOCAL GetList := {}

Justamente ele teve problema por não ter feito isso no fonte.
A compilação -w3 -es2 avisa se falta isso.

Nota:
GetList é a variável do Clipper/Harbour que contém todos os GETs pendentes.
Se chamar uma rotina com GETs durante os GETs atuais, acaba juntando tudo e dando erro de variável, se não declarar LOCAL.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Compilação -w3 -es2

Mensagempor JoséQuintas » 01 Out 2020 18:42

Um exemplo prático:

Estou alterando meu BROWSE do aplicativo.
Antes eu tinha opção de passar um filtro, e agora vou passar vários filtros.

O parâmetro que eu chamava cFilterAdd, alterei pra aFilterList.
Pronto, a partir daí a compilação me avisa todos os lugares do browse que eu preciso mexer, porque vai estar usando a variável velha cFilterAdd que não vou usar mais.

Isso é muito mais prático do que ficar caçando aonde precisa mexer.
E tem a vantagem de que não escapa um.

Acabo ganhando tempo, porque não preciso ficar conferindo todo fonte... e não vou precisar conferir as partes que não interessam e não estou mexendo...

Se fosse igual antigamente.... vixe....
Iria alterar igual mexendo em ovos, com o máximo de cuidado, e procurando variáveis, e com certeza deixaria passar muita coisa....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro