Os nomes utilizados em variáveis, métodos e funções são partes importantes do código para se guardar informação e não devem ser desperdiçados com palavras “vazias”. Eles podem ser utilizados como uma forma simples de comentários.

 

É importante evitar ambiguidade e escolher palavras bem específicas.

 

Exemplo:

 

Class BinaryTree 

Method New() Constructor

Method GetSize()

.

.

.

EndClass

 

O que se pode esperar do método getSize() ? A altura da árvore, o número de nós ou a quantidade de bytes que ela ocupa na memória?

 

Para evitar isso alguns nomes seriam mais precisos, como Height(), NumNodes(), SizeBytes()

 

Nomes genéricos como “temp” e “Ret” devem ser evitados dependendo do contexto.

 

Exemplo:

 

#INCLUDE "TOTVS.CH"

Function RaizDoQuad(aValores)

 

Local nTemp  := 0

Local nRet   := 0

Local nX          := 0

 

For nX := 1 to Len(aValores)

      nTemp += aValores[nX] * aValores[nX]

Next

      nRet := SqRt(nTemp)

Return nRet

 

No lugar de nTemp, um nome muito mais claro seria nSomaQuad.

Imaginando que acidentalmente a expressão ficasse: nTemp += aValores[nX], seria muito mais fácil de perceber o erro se a variável tivesse no nome o seu significado.

nSomaQuad += aValores[nX]

Dessa forma é muito mais intuitivo perceber que tem algo errado com a linha, já que a variável sugere (apenas pelo nome) que ela deveria conter a soma dos quadrados.

 

Porém, em alguns casos é totalmente viável utilizar nomes desse tipo.

 

Exemplo:

 

#INCLUDE "TOTVS.CH"

Function OrdenaVal(nValor1, nValor2)

 

Local nTemp := 0

     

 IF (nValor2 < nValor1)

      nTemp = nValor2

      nValor2 = nValor1

      nValor1 = nTemp

 

Return

 

Neste caso a variável serve justamente como temporária para troca de valores entre duas variáveis.

 

Para incrementos de loops, a tendência seria utilizar letras vagas como “i”, “j”,”k”. Mas com um pouco mais de cuidado na hora de escolher o nome, pode-se colocar muito mais informação e facilitar a detecção de pequenos bugs no código.

 

Exemplo:

 

#INCLUDE "TOTVS.CH"

Function CliLoop()

 

Local nI := 0

Local nJ := 0

Local nZ := 0

 

For nI := 1 to Len(aClientes)

 

      ConOut("Cliente: " + aClientes[nI])

      For nJ := 1 to Len(aClientes[nI])

     

            ConOut("Pedido: " + aClientes[nI][nJ])

            For nZ := 1 to Len(aClientes[nI][nJ]

                  ConOut("Itens: " + aClientes[nI][nJ][nZ])

           

            Next

      Next

Next

 

Return

 

Seria muito mais claro utilizar alguns nomes mais sugestivo, principalmente para encontrar facilmente uma troca acidental das variáveis.

 

#INCLUDE "TOTVS.CH"

Function CliLoop()

Local nCli  := 0

Local nPed  := 0

Local nIt   := 0

 

For nCli := 1 to Len(aClientes)

 

      ConOut("Cliente: " + aClientes[nCli])

      For nPed := 1 to Len(aClientes[nCli])

            ConOut("Pedido: " + aClientes[nPed][nCli])

            For nIt := 1 to Len(aClientes[nCli][nPed]

                  ConOut("Itens: " + aClientes[nCli][nPed][nIt])

            Next

      Next

Next

 

Return

 

Quando o escopo é muito curto não há problema em utilizar incrementos com apenas uma ou duas letras, mas se o escopo for grande, o leitor terá que criar um mapa mental para traduzir o nome das variáveis no que elas realmente significam. Quando o correto seria a variável já possuir no nome o seu significado.

 

  • Sem rótulos