Los números simplemente incluidos en el código son obvios únicamente para quién crea y generalmente solo en aquel momento. Entonces, cuando se utilice un número y su significado no es obvio, es aconsejable utilizar constantes con nombres más claros.
Sin embargo, no deben crearse constantes para expresiones complejas. Esto dejará el código muy difícil de entender y podrá causar errores básicos, pues es posible imaginar que una atribución se aplica a una variable cuando en realidad hay toda una expresión disfrazada:
Ejemplo:
#DEFINE NUMLINES aPrintDefs[1]
#DEFINE NUMPAGESaPrintDefs[2]
#DEFINE ISDISK aReturn[5]
If ISDISK == 1
NUMLINES := 55
EndIf
NUMPAGES += 1
La impresión que se tiene después de leer este código es que los valores están atribuyéndose a las variables o que están utilizándose las constantes. Si el objetivo es la flexibilidad, el código anterior debe sustituirse por:
#DEFINE NUMLINES 1
#DEFINE NUMPAGES 2
#DEFNE ISDISK 5
If aReturn[ISDISK] == 1
aPrintDefs[ NUMLINES ] := 55
EndIf
aPrintDefs[ NUMPAGES ] += 1