Publicado el 3 de Diciembre del 2020
293 visualizaciones desde el 3 de Diciembre del 2020
824,8 KB
15 paginas
Creado hace 18a (13/02/2006)
Formateo estestáándar
Formateo
C/ALC/AL®®
ndar de de
IvIváán Archilla Romero.
n Archilla Romero.
Support & Training
& Training
Support
Formateo de de ccóódigodigo
Formateo
Espacios separadores
separadores
Espacios
SSeparar
--
eparar con un
ambos lados
ambos
lados de un
operador binario
espacio
con un espacio
de un operador
y := (a + b) / 100;
y := (a + b) / 100;
y := (a+b)/100;
y := (a+b)/100;
de un comentario
comentario
i := i + 1; // incrementar
incrementar
i := i + 1; //
binario (+ / := etc)
(+ / := etc)
texto de un
// // incrementar
incrementar ííndice
ndice i := i
i := i
--
-- BIEN
BIEN
-- MAL MAL
barras y texto
barras y
-- BIEN
BIEN
ííndice
ndice
-- BIEN
BIEN
+ 1;
+ 1;
NNo o separar
separar
-- operador
operador monario
monario y y susu argumento
argumento
-- BIEN
BIEN
y := --x;x;
y :=
-- MAL MAL
y := -- x;x;
y :=
-- loslos ííndices
ndices de de unauna matrizmatriz
-- BIEN
BIEN
a[i][j] := b;
a[i][j] := b;
-- MAL MAL a[I] [j] := b;
a[I] [j] := b;
Formateo de de ccóódigodigo
Formateo
Indentacióónn
Indentaci
Indentar siempre
Indentar
con dos espacios
siempre con dos
espacios..
BIEN IF a <> '' THEN
IF a <> '' THEN
-- BIEN
Record.TESTFIELD(b); );
Record.TESTFIELD(b
-- MALMAL IF a <> '' THEN
IF a <> '' THEN
Record.TESTFIELD(b); );
Record.TESTFIELD(b
SiSi unauna expresi
partes de forma
partes
de C/AL tiene
expresióónn de C/AL
de forma clara
clara..
-- BIENBIEN
IF NOT SETCURRENTKEY(aaaaaaaa,bbbbbbbb,cccccccc
IF NOT
SETCURRENTKEY(aaaaaaaa,bbbbbbbb,cccccccc,,
caracteres, , dividirla
tiene mmááss de de unos
dividirla y y alinear
100 caracteres
unos 100
alinear sussus
THEN
THEN
SETCURRENTKEY(bbbbbbbbbbb,aaaaaaaaa););
SETCURRENTKEY(bbbbbbbbbbb,aaaaaaaaa
dddddddd,eeeeeeee););
dddddddd,eeeeeeee
Los Los parparééntesis
ntesis de la
de la izquierda
izquierda deben
deben alinearse
alinearse con
con loslos de la
de la llííneanea precedente
precedente..
-- BIEN
BIEN aaaaaaaaa
aaaaaaaaa := := ROUND((xxxxxxxxx/yyyyyyyyyy
ROUND((xxxxxxxxx/yyyyyyyyyy) *) *
(1 + zzzzzzzz
(1 +
zzzzzzzz / 100),0.00001);
/ 100),0.00001);
-- BIEN
BIEN IF (xxx <> '') AND
IF (xxx <> '') AND
((A = 1) OR
((A = 1) OR
(B = 2))
(B = 2))
THEN ...
THEN ...
Formateo de de ccóódigodigo
Formateo
ParParééntesis
ntesis
USAR PARÉÉNTESIS
USAR PAR
operadores..
operadores
BIEN
BIEN
NTESIS ssíí y y ssóólolo sisi hay hay queque modificar
modificar la
la precedencia
precedencia de de
IF IF Registrado
Registrado AND ("No." <> '') THEN
AND ("No." <> '') THEN
x := a + b
x := a + b
ELSE
ELSE
x := b / (a + b);
x := b / (a + b);
-- MALMAL
compilar]]
al al compilar
IF IF Registrado
Registrado AND "No." <> '' THEN [
AND "No." <> '' THEN [dada error
error
x := a + b
x := a + b
ELSE
ELSE
x := b / a + b; [resultado
x := b / a + b; [
resultado diferente
diferente]]
-- BIEN
BIEN IF a > b THEN
IF a > b THEN
-- MALMAL
a := 0;
a := 0;
IF (a > b) THEN
IF (a > b) THEN
a := 0;
a := 0;
NO USAR PARÉÉNTESIS en
NO USAR PAR
NTESIS en llamadas
llamadas a a funciones
funciones sin sin parparáámetros
metros..
-- BIEN
-- MALMAL
BIEN RegistrarL
RegistrarLííneanea;;
RegistrarLííneanea();
();
RegistrarL
Formateo de de ccóódigodigo
Formateo
Opciones
Opciones
Expresar laslas opciones
Expresar
opciones de de campos
campos o variables de forma
o variables de forma explexplíícitacita..
-- BIEN
BIEN
-- MALMAL
-- BIENBIEN
-- MALMAL
IF IF Tipo
IF IF Tipo
Tipo = = Tipo::Oferta
Tipo = 0 THEN
= 0 THEN
Tipo::Oferta THEN
THEN
Tipo IN [
IF IF Tipo
CASE Tipo
CASE
Tipo OFOF
IN [Tipo::Pedido,Tipo::Factura
Tipo::Pedido,Tipo::Factura] THEN
] THEN
Tipo::Pedido,Tipo::Factura::
Tipo::Pedido,Tipo::Factura
Tipo IN [1,2] THEN
IN [1,2] THEN
IF IF Tipo
CASE Tipo
CASE
Tipo OFOF
ELSE
ELSE
x := y;
x := y;
y := x;
y := x;
END;
END;
0,1:
0,1:
ELSE
ELSE
x := y;
x := y;
y := x;
y := x;
END;
END;
Formateo de de ccóódigodigo
Formateo
IF THEN ELSE (1)
IF THEN ELSE (1)
IF y THEN van en la mismamisma llííneanea. ELSE
IF y THEN van en la
-- BIEN
BIEN IF x = y THEN
IF x = y THEN
x := x + 1
x := x + 1
ELSE
ELSE
SiSi hay hay condiciones
condiciones largas
BIEN IF (
-- BIEN
x := --x x -- 1;1;
x :=
largas, THEN
xxxxxxxx = = yyyyyy) AND
) AND
IF (xxxxxxxx
((aaaaaa = = bbbbbbbb
bbbbbbbb))
. ELSE vava en en llííneanea separada
separada..
, THEN vava en en llííneanea separada
separada, , alineado
alineado con IF.
con IF.
y := b;
y := b;
condicióónn normalmente
normalmente cierta
La La condici
-- BIEN
BIEN IF IF Condicion
Condicion THEN
THEN
cierta se pone en la
se pone en la clcláásulasula THEN.
THEN.
THEN
THEN
ELSE
ELSE
x := a
x := a
regla
regla
ELSE
ELSE
excepcióónn
excepci
Formateo de de ccóódigodigo
Formateo
IF THEN ELSE (2)
IF THEN ELSE (2)
Cuando la
la condici
Cuando
considerar invertir
considerar
condicióónn eses muymuy complicada
complicada, ,
invertir laslas clclááusulas
usulas THEN y ELSE.
THEN y ELSE.
sulas queque incluyen
incluyen un EXIT no
un EXIT no deben
deben tener
tener
Las Las clcláásulas
parte ELSE.
ELSE.
parte
-- BIENBIEN IF x <> y THEN
IF x <> y THEN
EXIT(FALSE);
EXIT(FALSE);
x := x * 2;
x := x * 2;
-- MALMAL IF x <> y THEN
IF x <> y THEN
EXIT(FALSE)
EXIT(FALSE)
ELSE
ELSE
x := x * 2;
x := x * 2;
Formateo de de ccóódigodigo
Formateo
BEGIN END
BEGIN END
Cuando BEGIN
Cuando
BEGIN sigue
sigue a THEN o ELSE,
a THEN o ELSE, vava en en susu mismamisma llííneanea..
BIEN
IF x = y THEN BEGIN
BIEN
IF (x = y) AND
x := x * 2;
a := a - 3;
END;
MAL
IF x = y THEN
BEGIN
x := x * 2;
a := a - 3;
END;
(aaaaaaa = bbb)
THEN BEGIN
x := x * 2;
a := a - 3;
END ELSE BEGIN
x := x * 3;
a := 0;
END;
MAL
IF (x = y) AND
(aaaaaaa = bbb)
THEN
BEGIN
x := x * 2;
a := a - 3;
END ELSE
BEGIN
x := x * 3;
a := 0;
END;
Formateo de de ccóódigodigo
Formateo
REPEAT UNTIL/WHILE DO
REPEAT UNTIL/WHILE DO
REPEAT debe
REPEAT
UNTIL debe
UNTIL
debe irir en en unauna llííneanea acompa
acompaññadoado ssóólolo de la
debe irir solo en
solo en susu llííneanea..
de la condici
condicióónn de fin.
de fin.
-- BIENBIEN IF x < y THEN BEGIN
IF x < y THEN BEGIN
REPEAT
REPEAT
x := x + 1;
x := x + 1;
UNTIL x = y;
UNTIL x = y;
b := x;
b := x;
END;
END;
WHILE y DO van en la mismamisma llííneanea..
WHILE y DO van en la
-- BIENBIEN WHILE z < a DO BEGIN
WHILE z < a DO BEGIN
a := a + 1;
a := a + 1;
b := b -- 1;1;
b := b
END;
END;
Formateo de de ccóódigodigo
Formateo
CASECASE
alternativas, , usarusar mejormejor clcláásulas
sulas IF.
IF.
indentan dos dos espacios
espacios..
alternativas en la
hay dos alternativas
alternativas se se indentan
SiSi ssóólolo hay dos
Las Las alternativas
Cuando hay hay varias
Cuando
úúltima
ltima vava seguida
La La acciaccióónn simple (o el BEGIN de un
mmááss..
El BEGIN queque sigue
El BEGIN
varias alternativas
sigue al ELSE
seguida porpor dos dos puntos
simple (o el BEGIN de un grupo
puntos --sin sin espacio
espacio--..
grupo de de acciones
en la mismamisma llííneanea, , ééstasstas se se separan
separan porpor comas
comas --sin sin espacio
espacio-- y la
y la
acciones) ) vava en en llííneanea aparte
aparte, , indentada
indentada dos dos espacios
espacios
al ELSE vava en en susu mismamisma llííneanea..
--BIENBIEN
CASE Talla
CASE
Talla OFOF
Talla::Pequeññaa::
Talla::Peque
x := y;
x := y;
Talla::Media::
Talla::Media
BEGIN
BEGIN
x := a;
x := a;
y := b;
y := b;
END;
END;
Talla::Grande,Talla::Extra::
Talla::Grande,Talla::Extra
y := x;
y := x;
ELSE BEGIN
ELSE BEGIN
a := b;
a := b;
x := 0;
x := 0;
END;
END;
END;
END;
Mensajes al al usuario
usuario
Mensajes
General
General
mensajes de de contenido
Los Los mensajes
fichero ETXETX se se redactan
fichero
redactan en en formato
semejante a a loslos del del
formato semejante
semejante..
contenido semejante
Intentar queque el el mensaje
Intentar
mensaje quepa
quepa en en unauna solasola llííneanea..
No se usanusan barras
No se
llííneanea. . Excepci
Excepcióónn: : Dialog.OPEN
Dialog.OPEN
barras invertidas
invertidas parapara producir
producir saltos
saltos de de
FIELDNAME y y TABLENAME
TABLENAME siempre
Excepcióónn: : Dialog.OPEN
Dialog.OPEN (en
siempre queque se se
(en esteeste casocaso, no
, no
UsarUsar FIELDNAME
pueda. . Excepci
pueda
entrecomillar el el nombre
entrecomillar
nombre del campo)
del campo)
Mensajes al al usuario
usuario
Mensajes
ERROR, FIELDERROR
ERROR, FIELDERROR
ERROR, FIELDERROR
ERROR, FIELDERROR
-- El El mensaje
describir concisamente
concisamente::
debe describir
mensaje debe
a) a) ququéé estestáá mal mal
b) b) ccóómomo resolver
resolver el el problema
problema
debe acabar
de ERROR debe
mensaje de ERROR
-- El El mensaje
FIELDERROR, no.
FIELDERROR, no.
-- SiSi ERROR
ERROR tiene
acabar en en punto
punto; el
; el mensaje
mensaje de de
tiene parparáámetros
metros, , ponerlos
ponerlos en en llííneanea aparte
aparte..
-- BIENBIEN ERROR('.............. %1
ERROR('.............. %1 …… %2.',
%2.',
FIELDNAME(Campo1),Campo2);
FIELDNAME(Campo1),Campo2);
-- Advertir
Advertir al al usuario
usuario cuando
cuando NO PUEDE o DEBE
NO PUEDE o DEBE hacer
hacer algoalgo..
-- BIENBIEN ERROR('No se
-- BIENBIEN ERROR('Debe
ERROR('No se puede
puede...');
...');
ERROR('Debe introducirse
introducirse...');
...');
-- El El presente
presente eses preferible
preferible al al pasado
pasado..
-- BIENBIEN ERROR('No hay nada
ERROR('No hay nada queque registrar.');
registrar.');
-- MALMAL
ERROR('No se encontr
ERROR('No se
encontróó nada
nada queque
registrar.');
registrar.');
Mensajes al al usuario
usuario
Mensajes
MESSAGE, CONFIRM
MESSAGE, CONFIRM
MESSAGE
MESSAGE
mensaje debe
-- El El mensaje
-- Emitir
Emitir un un mensaje
escribiendo el el mensaje
escribiendo
acabar en en punto
punto..
siempre queque el el sistema
mensaje en en pasado
pasado
mensaje siempre
debe acabar
sistema termina
termina un un pr
Comentarios de: Formateo estándar de C/AL (0)
No hay comentarios