Você está na página 1de 11

Estndares de Codificacin en PLSQL

Cdigo:
Ttulo: Estndares de Codificacin en PLSQL
Objetivo: Describir los principios generales de construccin de cdigo en PLSQL
estableciendo el marco necesario para asegurar caractersticas comunes
para facilitar su desarrollo y mantenimiento.
Vigencia inicial :
ltima revisin :
ltimo revisor :
Vigencia hasta :
Autor:
Revisor:
Usuarios:
Dirigir Consultas a:
ndice
1.Palabras Reservadas.................................................................................................................................... 3
2.Nomenclatura de Variables .......................................................................................................................... 3
3.Indentacin, Espaciado y Leibilidad............................................................................................................. !
!."omentarios y #ocumentacin...................................................................................................................... $
%.&rani'acin de pa(uetes........................................................................................................................... 1)
...................................................................................................................................................................... 1)
*lineacin y leibilidad................................................................................................................................ 1)
&rden de los ob+etos................................................................................................................................... 11
Estructura de la documentacin ................................................................................................................. 11
1.
1. Palabras Reservadas
Se utilizan letras maysculas para las palabras reservadas y letras minsculas para el resto de
los identificadores.
l uso de maysculas y minsculas facilita la lectura del cdigo y permite distinguir
r!pidamente los diferentes componentes del lengua"e.
Las palabras reservadas son los t#rminos $ue tienen un significado especial para el compilador%
por e"emplo& '()L% )*% +,)-% D./D.
2. Nomenclatura de Variables
La descripcin de una variable debe permitir identificar su uso y contenido. Se deben evitar las
abreviaturas.
l lengua"e no es case sensitive 0diferencia entre maysculas y minsculas1 por lo $ue la
separacin entre palabras se debe 2acer con 345.
6 continuacin% se e"emplifican formas aceptadas con el comentario de su significado 0el cual
debera ser predecible por el desarrollador en funcin del nombre nicamente1.
persona una persona
personas una coleccin de personas 0vector% cursor% etc.1
e7iste4persona se8al $ue indica la e7istencia de una persona
Los prefi"os de las variables se rigen conforme a la siguiente tabla&
i!o de Variable "escri!cin #ormato
Par!metros Son los nombres de los par!metros formales de
cual$uier subprograma
p49descripcin:
;ariables Locales Son los nombres de variables locales a cual$uier
subprograma
l49descripcin:
;ariables ,lobales Son los nombres de variables globales a
cual$uier pa$uete
g49descripcin:
.onstantes ;alores constantes <49descripcin:
=egistro structura de datos 0record1 r49descripcin:
.ursor Definicin de un cursor c49descripcin:
>ser types ?ipos de datos definidos por usuario t49descripcin:
Nota: Para los user types, la notacin hace referencia a la definicin del mismo. El nombre de la
variable que ser de ese tipo no tiene prefijo.
$. %ndentacin& Es!aciado ' Le(ibilidad
La indentacin ordena la estructura% el espaciado facilita la lectura y el uso de otros
est!ndares garantiza la legibilidad del cdigo.
)tili*ar es!acios de cuatro +,- caracteres !ara indentar.
La indentacin muestra la estructura lgica del cdigo.
%ncluir siem!re es!acios blancos dentro de una sentencia.
l uso de espacios blancos facilita la comprensin de una sentencia.
"emplo&
n lugar de&
WHILE(l_total<l_total_pago AND l_mes=p_mes)LOOP
se escribe&
WHILE (l_total < l_total_pago AND l_mes = p_mes) LOOP
Escribir una sentencia !or l.nea.
Si bien el lengua"e PL@SQL permite el uso de varias sentencias en una lnea% debido al
uso del car!cter de terminacin 3A5% se desaconse"a esta practica. scribir una
sentencia por lnea permite visualizar m!s f!cilmente la lgica del programa.
Escribir una declaracin !or l.nea.
La escritura de una declaracin por lnea% como m!7imo% permite ordenar y comprender
m!s f!cilmente el cdigo.
"emplo&
/al0
DECLARE
l_sigla VARCHAR2(3) l_!e"#a_#o$ DA%E &= '('DA%E
1ien0
DECLARE
l_sigla VARCHAR2(3)
l_!e"#a_#o$ DA%E &= '('DA%E
Si una sentencia ocu!a ms de una l.nea& cada l.nea de continuacin comien*a con
la indentacin !autada.
"emplo&
/al0
ge)e*a*_esta+isti"as_pago (l_i+, l_!e"#a_-lt_pago, l_!e"#a_pago,
l_total, l_"a)ti+a+, l_p*ome+io)
.
1ien0
ge)e*a*_esta+isti"as_pago (l_i+, l_!e"#a_-lt_pago, l_!e"#a_pago,
l_total, l_"a)ti+a+, l_p*ome+io)
.

Las sentencias %NSER obli(atoriamente deben incluir la enumeracin de las
columnas 2ue afecta de la tabla en cuestin.
Be"ora la mantenibilidad del cdigo y permite retocar m!s f!cilmente las sentencias
)-S=? del cdigo.
"emplo&
/al0
IN'ER% IN%O mo+o*/pe*so)as VAL0E' (
1-)Apelli+o2, 2-)aDi*e""i3)2,
1-)%ele!o)o2, -)aE+a+, -)aAlt-*a
,-
1ien0
IN'ER% IN%O mo+o*/pe*so)as (
)om_apelli+o, +es_+i*e""i3),
)-m_tel4!o)o, )-m_e+a+, )-m_alt-*a
) VAL0E' (
1-)Apelli+o2, 2-)aDi*e""i3)2,
2-)%ele!o)o2, 2-)aE+a+ 2, 2-)aAlt-*a 2
,-
Para los 2ueries& mantener la alineacin vertical al terminar la !alabra reservada.
Permite enfatizar las relaciones y comprender me"or la estructura
"emplo&
'ELEC% pe*/)om_apelli+o,
+om/+es_"alle,
+om/)-m_)-me*o
5RO6 mo+o*/pe*so)as pe*,
6o+o*/+omi"ilios +om
WHERE pe*/"o+_pe*so)a = +om/"o+_pe*so)a
pe*/)-m_+)i = +om/)-m_+)i
ORDER 7( pe*/)om_apelli+o
Las sentencias SELEC& %NSER& )P"3E deben escribirse se!arando las estructuras
de las mismas.
*acilita el entendimiento del cdigo% la relacin entre los componentes en los inserts y
update% y posteriores an!lisis de la evolucin del cdigo con 2erramientas de
comparacin de fuentes.
?ambi#n es recomendable en el caso de usar muc2as tablas como origen% colocar alias
con la abreviatura de ellas.
"emplo&
/al0
'ELEC% )om_Apelli+o, !e"_mo+i!i"a"io) 5RO6 mo+o*/pe*so)as p*s,
pe*so)as_#ist #ist WHERE p*s/"o+_pe*so)a = #ist/"o+_pe*so)a
1ien0
'ELEC% p*s/)om_Apelli+o,
#is/!e"_mo+i!i"a"io)
5RO6 mo+o*/pe*so)as p*s,
mo+o*/pe*so)as_#ist #is
WHERE p*s/"o+_pe* = #is/"o+_pe*
Los subselects debern escribirse en l.neas nuevas.
>na vez m!s esto beneficia la legibilidad y por tanto la comprensin del cdigo como el
an!lisis desde productos de comparacin de fuentes.
"emplo&
/al0
'ELEC% 8 5RO6 mo+o*/pe*so)as p*s WHERE p*s/"o+_pe*so)a IN ('ELEC%
mo*/"o+_mo*oso 5RO6 mo+o*/mo*osos mo* WHERE mo*/)-m_mes_mo*a 9 3)
1ien0
'ELEC% 8
5RO6 mo+o*/pe*so)as p*s
WHERE p*s/"o+_pe*so)a IN (
'ELEC% mo*/"o+_mo*oso
5RO6 mo+o*/mo*osos mo*
WHERE mo*/)-m_mes_mo*a 9 3
)
%#... 4EN... ELSE.
Se utilizan alineadas las cl!usulas )*% LS)*% LS% -D. La cl!usula ?(- va a
continuacin de la e7presin a evaluar.
"emplo&
I5 <e:p*esi3);9 %HEN
se)te)"ias_e<e"-ta=les;
EL'I5 <e:p*esi3)29 %HEN
se)te)"ias_e<e"-ta=les2
///
EL'I5 <e:p*esi3)N9 %HEN
se)te)"ias_e<e"-ta=lesN
EL'E
se)te)"ias_e<e"-ta=les_else
END I5
L55P
Se alinean las cl!usulas de definicin del L//P 0L//P% '()L ... L//P% */= ... L//P1
con la cl!usula -D L//P.
"emplo&
WHILE <"o)+i"i3)9 LOOP
se)te)"ias_e<e"-ta=les
END LOOP
5OR i)+i"e IN >alo*_mi)imo // >alo*_ma:imo LOOP
se)te"ias_e<e"-ta=les
END LOOP
E6CEP%5N
.ada cl!usula '(- se indenta a partir de la e7presin C.P?)/- $ue da comienzo a
la seccin segn la indentacin pautada. La e7presin ?(- se escribe en la misma
lnea $ue la e7presin '(-.
Las sentencias e"ecutables se indentan a partir de cada cl!usula '(-.
"emplo&
E?CEP%ION
WHEN O%HER' %HEN
se)te)"ias_e<e"-ta=les
END
,. Comentarios ' "ocumentacin
Los nombres de las variables bien utilizados% comentarios $ue indi$uen el 3por$ue5 de la
lgica utilizada constituyen las bases para una buena documentacin.
Pautas (enerales
a. scribir cdigo $ue evite el uso de 3trucos ingeniosos5.
b. >tilizar nombres de variables $ue describan con precisin su ob"etivo.
c. >tilizar constantes en lugar de literales.
l uso de estas pautas reduce la necesidad de utilizar comentarios $ue describan el
ob"etivo del cdigo escrito% lo cual es deseable para no sobrecargar el cdigo.
Los comentarios se escriben a medida 2ue el cdi(o se escribe.
s poco probable $ue 2aya tiempo para agregar comentarios a un programa
terminado% es adem!s una tarea tediosa y se corre el riesgo de olvidar el motivo de
algunas decisiones tomadas y $ue era conveniente documentar. 6dem!s% la necesidad
de documentar obliga a una mayor comprensin del problema resuelto. Por eso% la
documentacin se incluye a medida $ue el cdigo es escrito.
)n comentario e7!lica el !or 2u8& no el cmo de un !ro(rama.
.ual$uier comentario $ue e7pli$ue el cmo de un programa es redundante& el cmo
est! dado por el tipo de sentencias utilizadas. Si se asigna el valor D a una variable el
comentario no debe indicar 3Se asigna D a tal variable5 sino el motivo de tal asignacin%
por e"emplo 3Se inicializa el contador de eventos5. n algunos casos ser! conveniente
el uso de funciones% por e"emplo 3inicializar4eventos5 para autoEdocumentar el cdigo
y ocultar la implementacin del 2ec2o 0la inicializacin podra ocurrir de diferentes
formas y esto es transparente a la comprensin del programa1.
Los comentarios mantienen la identacin del cdi(o.
l comentario se escribe a comienzo de lnea manteniendo la indentacin de la lnea
o 3acompa8a5 al cdigo.
9. 5r(ani*acin de !a2uetes
6 los puntos vistos anteriormente se les debe agregar ciertas pautas para identificacin de
funciones y procedimientos% declaracin de ob"etos y un modelo de documentacin para un
correcto versionado de los mismos.
3lineacin ' le(ibilidad
La alineacin permite una me"or localizacin de cambios al 2acer una comparacin
entre fuentes y por otro lado tornan al cdigo m!s legible.
6linear las cl!usulas P6.F6, o P6.F6, +/DG% )S% -D.
?odos los ob"etos declarados en la especificacin se indentan segn lo pautado.
>sar una eti$ueta 0nombre del pa$uete1 en la cl!usula -D del pa$uete para
identificar f!cilmente el final del mismo.
La misma normativa se aplica al cuerpo del pa$uete.
.abecera% par!metros y valor de retorno 0aun$ue no e7istan1 van en lneas
separadas.
Los tipos y modificadores deben estar alineados.
Los par!metros tienen un nivel de indentacin mayor $ue la apertura y cierre de la
funcin o procedimiento.
l siguiente e"emplo muestra los puntos anteriores.
"emplo&
PAC@AAE )om=*e_pa"Bage I'
lista_+e_+e"la*a"io)es
50NC%ION Nom=*e5-)"io) (
Pa*am; <<6o+i!i"a+o*es99 <<%ipoPa*amet*o99, CC "ome)ta*io
Pa*am2 <<6o+i!i"a+o*es99 <<%ipoPa*amet*o99 CC "ome)ta*io
) RE%0RN <<%ipoReto*)o99 CC "ome)ta*io

PROCED0RE Nom=*eP*o" (
Pa*am; <<6o+i!i"a+o*es99 <<%ipoPa*amet*o99,CC "ome)ta*io
Pa*am2 <<6o+i!i"a+o*es99 <<%ipoPa*amet*o99 CC "ome)ta*io
)
END )om=*e_pa"Bage
5rden de los ob:etos
Los ob"etos dentro de un pa$uete se listan segn el siguiente orden de comple"idad&
?ipos de datos comple"os 0por e"emplo% registros y tablas1.
;ariables escalares 0por e"emplo% declaracin de un number1.
Declaraciones relacionadas a la base de datos 0por e"emplo% cursores1.
7cepciones.
Bdulos 0procedimientos y funciones1.
Estructura de la documentacin
La documentacin global de un pa$uete debe respetar el siguiente formato&
PAC@AAE )om=*e_pa"Bage I'
lista_+e_+e"la*a"io)es
PAC@AAE )om=*e_pa"Bage
D8CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
E Des"*ip"i3)& ???
E
E 6o+i!i"a"io)es (5e"#a, A-to*, Cam=io)&
E ::D::D::, )om=*e_a-to*;, C*ea"i3) +el paF-ete
E ::D::D::, )om=*e_a-to*2, +es"*ip"i3)_"am=io2
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC8D
I'
///
END )om=*e_pa"Bage
La seccin de modificaciones incluye las modificaciones principales 0de gran
impacto1 sobre el pa$uete.
Se escriben en forma de lista en el rengln siguiente e indentadas.
La primera modificacin es la creacin del pa$uete.
ste tipo de documentacin es v!lida para las funciones y procedimientos $ue el
pa$uete pudiera contener.

Você também pode gostar