El formato horizontal determina el espaciamiento, posiciones y alineamiento horizontal entre los comandos y expresiones del lenguaje.
Espacios y posiciones horizontales
El contenido perteneciente a una función debe estar en la misma línea de la función. El contenido de un "if" debe tener una tabulación (sugerimos que la tabulación tenga 4 espacios) más distante que al inicio de la línea del "if", y así sucesivamente.
// HorizontalPositionAndSpace.prw
#INCLUDE "TOTVS.CH"
Function HorizontalPositionAndSpace()
Local cVar1:= ""
Local nVar2 := 0
Local nCount := 1
If Empty(cVar1)
ConOut("cVar1 está vacía.")
If nVar2 == 0
ConOut("nVar2 es cero.")
EndIf
EndIf
For nCount := 1 To 10
ConOut("nCount: " + AllTrim(Str(nCount)))
Next nCount
Begin Sequence
// Do something
End Sequence
Return
Esta separación, así como el formato vertical, proporcionará una visión clara de lo que pertenece a cada quién.
Alineamiento horizontal
La forma más clara de utilizar el alineamiento horizontal es agrupar palabras iguales y ordenadas alfabéticamente de modo creciente. Por ejemplo:
// HorizontalVariableAlignment.prw
#INCLUDE "TOTVS.CH"
Function HorizontalVariableAlignment()
Local cCharacters := ""
Local nIntegers := 0
Local lTrueOrFalse := .T.
Private lFalseOrTrue := .F.
Private cMoreChars := ""
Public cOthersChars := ""
Public cStrings := ""
Static lThisIsTrue := .T.
Return
De esta manera, si existen muchas variables, la búsqueda por una específica será más práctica. Busque por el objetivo de la variable (en orden alfabética y de modo creciente), después por el nombre (también en orden alfabética y de modo creciente, pero ignorando la notación húngara). Observe también, que la distancia de los tipos y de los nombres con relación al inicio de la línea es el mismo.
El mismo principio se aplica a las condicionales simples y complejas:
// HorizontalConditionAlignment.prw
#INCLUDE "TOTVS.CH"
Function HorizontalConditionAlignment()
Local lVar1 := .T.
Local lVar2 := .F.
Local lVar3 := .T.
Local lVar4 := .F.
Local cVar5 := ""
Local cVar6 := ""
If lVar1 .And. !lVar2
ConOut("Por ahora está todo bien.")
If (lVar1 .Or. !lVar2) .And.;
(lVar3 .Or. !lVar4) .And.;
(cVar5 == "" .And. cVar6 == "")
ConOut("Entró.")
EndIf
EndIf
Return
La organización ejemplificada puede variar en cada caso, lo importante es mantener las condicionales complejas legibles y de fácil interpretación. En la mayoría de los casos, debe dividirse la condición en condiciones encadenadas y simples.