Tech - Análise Sistemas

Legibilidade de Código - algumas regras

Este artigo tem a finalidade de enfatizar algo que muitas vezes não é levado em consideração quando se está programando: a legibilidade do código, ou seja, se o código é fácil de ser lido e entendido ou se foi escrito de uma forma que se torna cansativo procurar certos trechos ou nomes.

por Davi Medrade



Estou escrevendo este artigo para enfatizar algo que muitas vezes não é levado em consideração quando se está programando: a legibilidade do código, ou seja, se o código é fácil de ser lido e entendido ou se foi escrito de uma forma que se torna cansativo procurar certos trechos ou nomes. Existem várias regras para facilitar a legibilidade do seu código-fonte, e vou mostrar uma a uma, mas lembre-se que neste caso, você não deve escolher uma das regras, e sim aplicá-las todas juntas. Isso é muito importante se você precisar compartilhar código-fonte, ou se houver a possibilidade de outro programador obter acesso ao seu código. Usando as regras de legibilidade de código, fica fácil para outro programador entender seus fontes e facilitará futuras alterações, quer feitas por você, quer por outros.

Agora, vamos a cada uma das regras:

1 - Nomear em inglês

Embora vivamos em um país cuja língua é o Português, é sempre recomendável nomear variáveis, rotinas, funções, controles, objetos e tudo que pode ter um nome, em inglês. Invariavelmente, inglês é a língua da programação, portanto, fica até mais bonito um código com nomes em inglês, de modo a não destoar das próprias palavras reservadas da linguagem usada, sem contar que não podemos usar acentos, portanto, nomes de variáveis podem ficar ridículos sem a devida acentuação. Veja o exemplo de código em VB:

Listagem 1: Comparação de variáveis em português em inglÊs

If bEstaAtivo = True Then
    For iIndice = 0 To UBound(astrNomesDeArquivos)
        Print #iNumeroArq, astrNomesDeArquivos(iIndice)
    Next iIndice
End If
Suponho que o seguinte fica bem melhor:
If bIsActive = True Then
    For iIndex = 0 To UBound(astrFileNames)
        Print #iFileNum, astrFileNames(iIndex)
    Next iIndex
End If

2 - Usar Notação Húngara e Convenções de Nomeação

A notação húngara consiste em colocar-se prefixos nos nomes de variáveis, de modo a facilmente se identificar seu tipo. Isto facilita na criação de códigos-fonte extensos, pois usando a Notação Húngara, você não precisa ficar o tempo todo voltando à definição de uma variável para se lembrar qual é o tipo de dados que deve ser colocado nela. Outra coisa estabelecida pelas Convenções de Nomeação é que funções e rotinas devem ter nomes iniciando em maiúsculas e deve ser maiúscula a inicial de cada uma das palavras que forma o nome; variáveis devem ter um prefixo de Notação Húngara em minúsculas, seguido de um nome que identifique a função da variável, sendo que a inicial de cada palavra deve ser maiúscula; constantes devem ter seus nomes todos em maiúsculas, e sempre que possível, com as palavras separadas por underscores (_). Exemplos:

Variável tipo Matriz (array) de Inteiros (integer) que contem o número de conexões ativas: aiActiveConnections

Função que retorna o nome da pasta atual: GetCurrentFolder

Rotina que seta a pasta atual: SetCurrentFolder

Constante com o número máximo de conexões que podem estar ativas: MAX_ACTIVE_CONNECTIONS

Alguns prefixos de notação húngara, adaptados para o VB:

a: Array

b: Boolean

by: Byte (ou c: Char)

d: Float (Double Precision)

f: Float (Single Precision)

h: Handle

i: Integer (também é usado int)

l: Long Integer (também é usado lng)

m_: Membro de uma determinada classe, como uma propriedade de um ActiveX (armazene o valor da propriedade CurrentUser do ActiveX em m_strCurrentUser) str: String

u: Unsigned (sem sinal, deve ser usado com um prefixo de número, tipo: uintValue)

Se o tipo que você quer não tem um prefixo de notação húngara definido, crie um, com até 3 letras. Por exemplo:

cmdOK : Botão (CommandButton) OK

lvwFiles: ListView (parte dos Windows CommonControls) que contém os nomes de arquivos

picIcon: PictureBox que contém o ícone

frmMain: Janela (Form) principal de uma aplicação

atxtNames: Array de TextBoxes que contém nomes

3 - Tabulação e Quebra de Linha

Tabulação e quebra de linha são coisas que não são muito usadas, principalmente pelos programadores iniciantes, que acham que é besteira e perda de tempo, mas na verdade, a tabulação e a quebra de linha são fundamentais para a boa compreensão do código-fonte. Faça a comparação:

Listagem 2: Comparação entre código formatado e não formatado

If bIsActive = True Then
For iIndex = 0 To UBound(astrFileNames): Print #iFileNum, astrFileNames(iIndex): Next iIndex
End If
Ou será que este não é mais legível:
If bIsActive = True Then
    For iIndex = 0 To UBound(astrFileNames)
        Print #iFileNum, astrFileNames(iIndex)
    Next iIndex
End If

Tire suas próprias conclusões.

Espero que isto ajude a melhorar a legibilidade do seu código.

Outra dica: NUNCA use a instrução GOTO.

Davi Medrade

Programador de VB, C++ e PHP

Davi Medrade

Davi Medrade - Programador VB, C++ e PHP