Por que programar em TLPP?

Cristiano Denardi Alarcon
TOTVS Developers
Published in
3 min readJul 22, 2024

Sei que mudar as ferramentas que utilizamos é difícil no começo, ainda mais se for a linguagem de programação. Porém, partir de AdvPL para TLPP pode ser um caminho bem proveitoso e de curto prazo de aprendizado.

E falo isso porque sou um desenvolvedor AdvPL que já fez esse caminho há anos e não me vejo mais criando um fonte em AdvPL. Então, posso falar por experiência própria, pode pular que a água está quente, e não é mentira. Rs

Bem … tentarei ser breve e focar nos ganhos, pois os passos detalhados em como migrar irei abordar no próximo artigo: “Como iniciar e migrar para a linguagem?”.

Mas chega de enrolação e vamos direto ao que interessa!

Quando decidimos utilizar o TLPP, já teremos de largada um grande ganho, o uso de NOMES LONGOS. Quem é desenvolvedor AdvPL sabe a dor de criar nomes de funções, classes, métodos, variáveis e propriedades com somente 10 caracteres. Portanto, somente esse item já nos fará bem felizes.

function U_PodemosUtilizarNomesLongosAte255Characteres()

local cNomesLongosTambemParaVariaveis := "Exemplo"

return cNomesLongosTambemParaVariaveis

Mas não é somente isso, em TLPP temos também NAMESPACES, que nos ajuda e muito na organização de bibliotecas. Esse é outro recurso que não consigo mais ficar sem.

Ah! Você já deve estar feliz, né? Calma que ainda não terminamos de dar as boas notícias.

Com TLPP, resolvemos outro velho problema em AdvPL: a chamada de funções e métodos com uma infinidade de parâmetros. Afinal, sempre temos que ficar contando as posições dos parâmetros e incluir aquela chuva de vírgulas (“,”).

Sim, a gente sempre fez muito isso: func(a,b,c,,,,,,,,,,,x,y,z). Depois, rezamos para contar certo as vírgulas, nenhuma mais, nenhuma menos. Errou? Tempo perdido! Quem nunca ficou bravo com isso?

Para isso, em TLPP, temos os PARÂMETROS NOMEADOS. Logo, não precisaremos mais passar na ordem os parâmetros, ou seja, basta saber o nome correto do parâmetro e indicar que o valor passado na chamada da função é para aplicar em determinado parâmetro! Interessante, não?

/*
Assinatura da Função
function exemploParametrosNomeados( nP1, nP2, nP3, nP4, cP5, cP6, cP7, cP8 )
*/

//Em AdvPL, se apenas nP3 e cP8 interessam,teria que ser assim
exemploParametrosNomeados( ,,123,,,,,"xpto" )

//Em TLPP, pode ser mais simples, mais legível e menos suscetível a erro
exemploParametrosNomeados(nP3=123,cP8="xpto")

O TLPP também utiliza TIPAGEM, portanto poderemos agilizar o desenvolvimento e prevenir o bom e velho problema em tempo de execução em AdvPL, erro de “type mismatch”.

Podemos também fazer uso de recursos avançados em desenvolvimento ORIENTADO A OBJETOS, pois classes em TLPP terão acesso a recursos como: modificadores de acesso, método estático, sobrecarga de operadores e interface.

Utilizar REFLECTIONS E ANNOTATIONS para uso de metadados em funções, classes e métodos.

Capturar erros com TRY…CATCH de forma intuitiva, sem correr o risco de causar colateral, “roubando” a função de tratamento de erros. Aliás, o Hugo escreveu um artigo muito bom de como utilizar esse recurso em:

Além da linguagem base, é possível utilizar recursos avançados e módulos através do tlppCore. Entre outros, vamos citar agora apenas REST, PROBAT e RegEx.

Escrever REST em tlppCore é muito mais simples do que anteriormente. Possui recursos interessantes, desde pontos de entrada para subida e encerramento de threads, tratamento de erros, subida dinâmica de um serviço através de JSON e mais.

Criar programas e suites de testes utilizando os recursos disponíveis pelo PROBAT.

Fazer uso de expressões regulares, mais conhecidas por RegEx.

Não irei me aprofundar nesses assuntos agora, mas fiquem tranquilos pois eles serão explorados em futuros artigos. Não percam!

--

--

Cristiano Denardi Alarcon
TOTVS Developers

Dev especializado em TLPP e AdvPL. Atua na equipe TOTVSTEC tlppCore. Interessado em compartilhar conhecimento e experiências sobre desenvolvimento de software.