- A extensão deve ser minúscula (exemplo:
.prw,.apw)
- Tabs somente para indentação, não para separação
- Sempre use notação húngara em nomes de variáveis
- Evite nomes de variáveis como
nXounY(exceto para índices). Seja mais descritivo - Palavras-chave da linguagem devem usar UpperCamelCase (exemplos:
If,EndIf,While) - Ao terminar uma instrução
Do While, prefiraEndDoao invés de somenteEnd - Ao terminar uma instrução
For, prefiraNext <variable>ao invés de somenteNext - Nomes de variáveis locais devem ser em lowerCamelCase (exemplos:
cName,nAge) - Nomes de funções em notação húngara devem usar lowerCamelCase (exemplo:
aAdd) - Use as variáveis com nomes iguais em tamanho e caixa (não faça
thisIsMyVariableeTHISISMYVARI) - Nomes de funções sem notação húngara devem usar UpperCamelCase (exemplo:
RetSqlName) - Deve haver 1 espaço entre os argumentos de função, blocos e arrays (exemplo:
RetSqlName( 'STJ' )) - Deve haver 1 espaço após cada vírgula (exemplo:
{ 1, 2, 3 }) - Deve haver espaço entre parâmetros de funções (use
Call( 1, 2, 3 )e nãoCall(1,2,3)) - Evite ultrapassar 80 colunas horizontalmente. Quebre o código quando necessário
- Valores lógicos devem usar caixa alta (exemplo:
.F.) - Espaço entre operadores. Use
nValue > nExpectedao invés denValue>nExpected Returnindentado, já que faz parte da estrutura da função e não é um terminador- Em comentários, 1 espaço após
// - Idioma padronizado. Evite misturar português e inglês quando possível
- Deixar 1 linha em branco para cada statement, exceto conjuntos de statements
- Deixar 1 linha vazia no final de cada arquivo
- Prefira aspas simples
'ao invés de duplas" - Para acesso de índices múltiplos, evite
aList[ nI ][ nJ ]. UseaList[ nI, nJ ] - Funções não devem receber mais que 6 parâmetros
- Evite aninhamentos com mais de 3 statements (exemplo:
Ifdentro deIfdentro deIf) - Use
!=ao invés de<> - Não faça
== .T. - Use
!ao invés de.Not.
- Substitua
Ifdentro deIfpor.And.
- Lembre-se de, ao criar uma tabela temporária, fechá-la com
dbCloseArea - Lembre-se de fechar o handler para o arquivo com
fCloseao usarfOpen - Quando deslocar para outro registro utilizando
dbSkip, garanta estar posicionado na tabela desejada, caso contrário utilizeTABLE->( dbSkip() )ou então utilizedbSelectArea( TABLE )antes dodbSkip()