🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️ Olá pessoal, Espero que este post encontre todos vocês bem! É com grande entusiasmo que compartilho que estou expandindo meus serviços como Desenvolvedor AdvPL para novos desafios e colaborações. Com mais de duas décadas de experiência sólida, minha jornada profissional tem sido enriquecedora, com a oportunidade de participar de projetos empolgantes ao longo dos anos. Agora, estou ansioso para trazer minha experiência e habilidades para novas equipes e projetos, trabalhando de forma remota. Minha expertise abrange não apenas AdvPL, mas também outras tecnologias-chave, incluindo JS, SQL, Infraestrutura e Otimização de Processos. Acredito que essa combinação de conhecimentos me permite oferecer soluções abrangentes e eficazes para uma variedade de necessidades de desenvolvimento. Acredito que a tecnologia tem o poder de transformar negócios e impulsionar o sucesso, e estou comprometido em ajudar meus clientes a alcançar seu
LOCAL, PRIVATE:
Essas duas instruções declaram variáveis para uso subseqüente. Entretanto, existem diferenças importantes entre os tipos de variáveis que elas criam. PRIVATE declara variáveis visíveis na rotina na qual você as declara e também em qualquer rotina que você chame a partir do ponto da declaração.
User Function Test()
Private nI
U_Test1()
Return( NIL )
User Function Test1()
//aqui poderemos enxergar e fazer uso da variável nI criada em //U_Test()
Return( NIL )
A instrução LOCAL declara variáveis somente visíveis na rotina na qual foram declaradas; dessa forma:
User Function Test()
Local nI
U_Test1()
Return( NIL )
User Function Test1()
//aqui não poderemos enxergar e nem fazer uso da variável nI criada //em U_Test()
Return( NIL )
O problema com as Private:
As variáveis Private representam um dos maiores obstáculos para a criação de rotinas modulares e confiáveis. O principal problema é que elas não são privadas de modo algum e isto ocasiona sérios problemas. Por exemplo, examine o seguinte:
User Function Test()
Private nI := 0
Private aTest[10]
While ( ++nI <= 10 )
Test1()
//nI será sempre 4 aqui
End While
Return( NIL )
Static Function Test1()
nI := 0
While ( ++nI <= 3 )
aTest[ nI ] := nI
End While
Return( NIL )
No fragmento de código acima, a função Test1() usa uma variável nI para o controle do Loop, mas como a função Test(), sua chamadora, já possui uma variável nI, Test1() usa esta última. O resultado é que, no retorno a Test(), nI contém o valor 4, fazendo com que o programa fique em loop infinito. Uma solução para o problema seria declarar a variável nI como private em Test1(). Desta forma a variável nI criada em Test() será preservada no retorno de Test1(). A melhor solução, seria criar nI como Local, tanto em Test() como em Test1().
User Function Test()
Local nI := 0
Local aTest[10]
While ( ++nI <= 10 )
Test1( @aTest )
End While
Return( NIL )
Static Function Test1( aTest )
Local nI := 0
While ( ++nI <= 3 )
aTest[ nI ] := nI
End While
Return( NIL )
Obs.: Muito cuidado ao usar variáveis Private no Programa. Isso pode causar probemas muito difíceis de depurar. Use Variáveis Locais e abra mão da referência para obter retorno. Garanta que todas as Variáveis utilizadas no Programa tenham sido previamente declaradas.
Essas duas instruções declaram variáveis para uso subseqüente. Entretanto, existem diferenças importantes entre os tipos de variáveis que elas criam. PRIVATE declara variáveis visíveis na rotina na qual você as declara e também em qualquer rotina que você chame a partir do ponto da declaração.
User Function Test()
Private nI
U_Test1()
Return( NIL )
User Function Test1()
//aqui poderemos enxergar e fazer uso da variável nI criada em //U_Test()
Return( NIL )
A instrução LOCAL declara variáveis somente visíveis na rotina na qual foram declaradas; dessa forma:
User Function Test()
Local nI
U_Test1()
Return( NIL )
User Function Test1()
//aqui não poderemos enxergar e nem fazer uso da variável nI criada //em U_Test()
Return( NIL )
O problema com as Private:
As variáveis Private representam um dos maiores obstáculos para a criação de rotinas modulares e confiáveis. O principal problema é que elas não são privadas de modo algum e isto ocasiona sérios problemas. Por exemplo, examine o seguinte:
User Function Test()
Private nI := 0
Private aTest[10]
While ( ++nI <= 10 )
Test1()
//nI será sempre 4 aqui
End While
Return( NIL )
Static Function Test1()
nI := 0
While ( ++nI <= 3 )
aTest[ nI ] := nI
End While
Return( NIL )
No fragmento de código acima, a função Test1() usa uma variável nI para o controle do Loop, mas como a função Test(), sua chamadora, já possui uma variável nI, Test1() usa esta última. O resultado é que, no retorno a Test(), nI contém o valor 4, fazendo com que o programa fique em loop infinito. Uma solução para o problema seria declarar a variável nI como private em Test1(). Desta forma a variável nI criada em Test() será preservada no retorno de Test1(). A melhor solução, seria criar nI como Local, tanto em Test() como em Test1().
User Function Test()
Local nI := 0
Local aTest[10]
While ( ++nI <= 10 )
Test1( @aTest )
End While
Return( NIL )
Static Function Test1( aTest )
Local nI := 0
While ( ++nI <= 3 )
aTest[ nI ] := nI
End While
Return( NIL )
Obs.: Muito cuidado ao usar variáveis Private no Programa. Isso pode causar probemas muito difíceis de depurar. Use Variáveis Locais e abra mão da referência para obter retorno. Garanta que todas as Variáveis utilizadas no Programa tenham sido previamente declaradas.
Comentários
Postar um comentário