mejores practicas en programación rpg iv según bryan meyers

6
estilo, estándares y modelos 6e programación recomendados A la velocidad a la que está cambiando el lenguaje, los modelos de programación aconsejados y las guías de estilo están resultando ser blancos en movimiento por Bryan Meyers la clásica comedia satúica "The 2000 Year-Old Man", el actor Carl Reiner entrevistaba a Me1 Brooks, que hacía el papel de un hombre pnmiti- vo recién descubierto, que hablaba con un fuerte E acento yídish de NuevaYork. Al mismo tiempo que 1 Brooks compartía sus recuerdos con Reiner, también se ma- ravillaba de los cambios que se había producido en los úiti- mos 2000 aiios y daba consejos para vivir más aiios. Si un programador de RPG clásico examina los programas que se escriben en RPG hoy en día puede que se sienta tan intimidado como ese hombre de hace 2000 años. Los últimos releases han incluido tantos cambios en el lenguaje RPG que incluso si está programando en RPG N puede que necesite un curso de r e d a j e para poder sacar partido a las nuevas funciones; un programa actual escrito en RPG N se parece muy poco o nada al RPG original que vio la luz en los años sesenta. Al ritmo que está cambiando el lenguaje, los modelos de programación aconsejados y las guías de estilo se están con- virtiendo en blancos móviles. Los objetivos de cualquier de- bate sobre estándares y modelos deben ser acelerar el proce- so de desarrqiio de la aplicación, facilitar el mantenimiento del programa y reducir los errores. Estos objetivos se ciimpli- rán si escribe sus programas pensando sobre todo en la reutilización del código y en los estándares. En este artículo presentamos algunas sugerencias puestas al día sobre cómo escribir programas en RPG N que sean fáciles de leer, entender y mantener. Muchas de estas direc- trices requieren el uso de la V5R1; si se precisa un release más reciente, se indicará en el texto. Liberar el Factor 2 Repita conmigo 'RPG N es un lenguaje de formato libre; no utilizaré cálculos en formato fijo". Este es el primer manda- miento de la guía de estilo de RPG IV. Las ventajas del formato libre son bien conocidas. Es más fácil de leer, documentar y mantener que el código en forma- to fijo y su sintaxis es wherente con la de otros lenguajes de programación más modernos. En muchos casos, si se utiliza la especiñcaci6n de formato libre, automáticamente estará utilizando buenos estándaes porque no permite muchos de los modelos de programación obsoletos y deficientes que permitían las espenfieaciones C de formato fijo. Además, a partir del releaseV5R2, muchas de las nuevas funciones de RPG sólo existen en formato libre. Evite -lar el estilo de formato fio con el estilo de formato libre en las especificaciones C. El resultado es incoherente y difícil de leer. Saque el máximo partido del or- den más natural y del espacio ampliado que permite el for- mato libre. Cuando escriba bucles y grupos, verá que el códi- go tiene un mejor aspecto. Utilice las expresiones de formato libre siempre que pueda en expresiones aritméticas, lógicas y de manipulación de series de caracteres; para las operacio- nes de asignación y de comparación; y para establecer indi- cadores (silos necesita).Pero no abandone del todo la alinea- ción mediante columnas como herramienta de ayuda a la legibilidad de las expresiones. Especialmente cuando una expresión debe continuar en las líneas siguientes, alinee la expresión para que sea más fácil de entender: /Free Total = (HarasReg * Tarifa) + (HorasExtras * Tarifa * 1.5) + (HorasDobles * Tarifa * 2); /End-free Adopte [LE El segundo mandamiento de la guía de estilo de RPG N es W G N e LE están inexcusablemente unidos y nunca de- ben separarsen. Cada vez que oigo a un programador de RPG (a peor aún, a un consultor) decirme quel'utilizo RPG N pero no hago nada de eso de los enlaces"me quedo sin palabras. La sintaxis de RPG junto con el entorno de lenguajes integrados (ILE), propicia la programación modular de las aplicaciones. La modularidad okece un media de organizar una aplicación, facilita el mantenimiento del programa, oculta la lógica com- pleja y reutiliza el código de forma eficaz allí donde se aplica. 16 ServerNEWS JUNIO-JULIO 2005

Upload: lilisustar

Post on 24-Jul-2015

3.533 views

Category:

Documents


5 download

DESCRIPTION

Tips y recomendaciones de estilo y estándares del reconocido autor Bryan Meyers para aquellos que programamos en RPG IV.

TRANSCRIPT

Page 1: Mejores Practicas en Programación RPG IV según Bryan Meyers

estilo, estándares y modelos 6e programación recomendados A la velocidad a la que está cambiando el lenguaje, los modelos de programación

aconsejados y las guías de estilo están resultando ser blancos en movimiento

por Bryan Meyers

la clásica comedia satúica "The 2000 Year-Old Man", el actor Carl Reiner entrevistaba a Me1 Brooks, que hacía el papel de un hombre pnmiti- vo recién descubierto, que hablaba con un fuerte E acento yídish de NuevaYork. Al mismo tiempo que

1 Brooks compartía sus recuerdos con Reiner, también se ma- ravillaba de los cambios que se había producido en los úiti- mos 2000 aiios y daba consejos para vivir más aiios.

Si un programador de RPG clásico examina los programas que se escriben en RPG hoy en día puede que se sienta tan intimidado como ese hombre de hace 2000 años. Los últimos releases han incluido tantos cambios en el lenguaje RPG que incluso si está programando en RPG N puede que necesite un curso de r eda je para poder sacar partido a las nuevas funciones; un programa actual escrito en RPG N se parece muy poco o nada al RPG original que vio la luz en los años sesenta. Al ritmo que está cambiando el lenguaje, los modelos de

programación aconsejados y las guías de estilo se están con- virtiendo en blancos móviles. Los objetivos de cualquier de- bate sobre estándares y modelos deben ser acelerar el proce- so de desarrqiio de la aplicación, facilitar el mantenimiento del programa y reducir los errores. Estos objetivos se ciimpli- rán si escribe sus programas pensando sobre todo en la reutilización del código y en los estándares.

En este artículo presentamos algunas sugerencias puestas al día sobre cómo escribir programas en RPG N que sean fáciles de leer, entender y mantener. Muchas de estas direc- trices requieren el uso de la V5R1; si se precisa un release más reciente, se indicará en el texto.

Liberar el Factor 2 Repita conmigo 'RPG N es un lenguaje de formato libre; no utilizaré cálculos en formato fijo". Este es el primer manda- miento de la guía de estilo de RPG IV.

Las ventajas del formato libre son bien conocidas. Es más fácil de leer, documentar y mantener que el código en forma- to fijo y su sintaxis es wherente con la de otros lenguajes de programación más modernos.

En muchos casos, si se utiliza la especiñcaci6n de formato libre, automáticamente estará utilizando buenos estándaes porque no permite muchos de los modelos de programación obsoletos y deficientes que permitían las espenfieaciones C de formato fijo. Además, a partir del releaseV5R2, muchas de las nuevas funciones de RPG sólo existen en formato libre.

Evite -lar el estilo de formato f io con el estilo de formato libre en las especificaciones C. El resultado es incoherente y difícil de leer. Saque el máximo partido del or- den más natural y del espacio ampliado que permite el for- mato libre. Cuando escriba bucles y grupos, verá que el códi- go tiene un mejor aspecto. Utilice las expresiones de formato libre siempre que pueda en expresiones aritméticas, lógicas y de manipulación de series de caracteres; para las operacio- nes de asignación y de comparación; y para establecer indi- cadores (si los necesita). Pero no abandone del todo la alinea- ción mediante columnas como herramienta de ayuda a la legibilidad de las expresiones. Especialmente cuando una expresión debe continuar en las líneas siguientes, alinee la expresión para que sea más fácil de entender:

/Free Total = (HarasReg * Tar i fa) +

(HorasExtras * T a r i f a * 1.5) + (HorasDobles * Tar i fa * 2);

/End-free

Adopte [LE El segundo mandamiento de la guía de estilo de RPG N es W G N e LE están inexcusablemente unidos y nunca de- ben separarsen.

Cada vez que oigo a un programador de RPG (a peor aún, a un consultor) decirme quel'utilizo RPG N pero no hago nada de eso de los enlaces" me quedo sin palabras. La sintaxis de RPG junto con el entorno de lenguajes integrados (ILE), propicia la programación modular de las aplicaciones. La modularidad okece un media de organizar una aplicación, facilita el mantenimiento del programa, oculta la lógica com- pleja y reutiliza el código de forma eficaz allí donde se aplica.

16 ServerNEWS JUNIO-JULIO 2005

Page 2: Mejores Practicas en Programación RPG IV según Bryan Meyers

l

manbenimiento en una pesadilla. El código £ven& del len-

que con d guaje enlazador le permitirá controlar expüctamente la fir- ma de un progzama de se&eioy,Lo que es más importante, permite al programa de 9~nriio mantener varia8 firmas. Esta earactdstica significa que puede haceme cambios drástico8 en m progma de seMcio-Xfadir, cambiar yeliminar pm-

w o u n t ' e s ~ i r ' ~ oedimientogsin tener que modiñcar los pragramas que uti- "&ha w wl r l s t F i a wrur, Cita. ara% liaan el programii de servicio.

M@ :18F UhLce las pouibBidades de e r e a r p r o f o ~ de BPG F a lCbLPV *m AUmt i rR*krewnt lVpamdefinKpar&meh.os e interfaces depwedinaien-

tos. Los prntotipos (de5iciones PR) pla& intesfaces de prn-

I f I-I* - 'TX'; &entos (deñniciones PI) ofrecen muchas ventaja8 m-

- do se trata de pasar datps entre módnlos y programas. Por ejemplo, evitan errww dnrant.e la ejecwirin al darle al compilador la po~ibilidad de wmpmbar el tipo de datos y el

Ideafifiue el código retrtizlaabk de un pacedimien- nírmeko de parámetras. Lo8 pro;kotipos también permiten es- to. En lugar de monstnros multiiiso monolíticoe, escriba mi- cribir literalea y expresiones cnmo parámetm, dedatar lis. dadw de compilación m& pequefas, que realicen una sola tas deparámeíros (inelmo *ENTRY PLIST) ea lag aspeeia- funcidn, y enlácelas wn los progmmas pUe las necesite. a- caciones D y pam3 parámetrosporvalor y por referenciasól~ mine el c6digo duplicado, pm pequeño que sea; su mantra de de lectura, asi coma por referencia. pmpmaoión debe ser "una vez y sólo una". AZmaene pmü&pos en miembro@ /COPE Para cada

Reikgue el edd&o m a n o d un ptocedinuienbd bien $nódulo, escriba un miembm KOPY que conkenga el pmtoti- sEocuotc?ttado Y C O ~ im nombre a%plhEto, k pesar db to- po delproeedimienbdemdaprooedimiento exportado en ese 1 dos sus esher&os, en a l g m raras ocasiones sencillamente módülo. A c o n ~ u a t i i n ~ incluya una referencia a esemódulo no sed capaz de entender el sentido de un fragmento dc có- /UXY en todos los módulos que hagan referencia a lo8 pro- I

digo sin comentarlo exhaustivamente. Si aisla ese código co- cedimientos del módulo al que se llama. Esta técnica le evita- mentado y comprobado a fondo en un procedimiento propio, rá escribir los prototipos cada ves quc los necesite y reduce la les ahorrará a los futuros programadores que realicen tareas posibilidad de cometer errores. Una alternativa a tener mu- de mantenimiento, el problema de descifrar innecesariamen- chos miembms ICOPY de pequeño tamaüo es tener un miem- te ese código. bro KOPY maestro que contenga prototipos para todos o casi

Utilice los directorios de enlace de forma coherente. todos los procedimientos reutilizables. Un directoido de enlaoe es un objeto que pude ayudarle a organipar las "piezaen necesarias pam mear tm programa. Si utiliza un directorio de enlace w a listat los m W o s o los programas de servicio más utilizados, evitará tareas repe- titivas y errores, ya que podrá hacer refeiencia al directorio o directorios de enlace en vez de tener que listar explícitamen- te los componentea necesarios cuando d a c e un programa canlos mandatos CaTPGM ( E w p r o p m ) o GRTSRWM (Crear Dromma de senrieid. Pata u a a t los direetotim de . .. enlace eficazmente necesitará diseñar una estrategia cohe- rente. Puede que la estrategia más práctica sea tener un di- rectorio de enlace generico que sima para hacer referencia al c6djgo reutilimble que ee w a en varias apiieaoionw, junto con uo dired& de edaw espeeíñ.~~ de una aplcación para el &o m e se u W únicamente en esa aaiicaciibn. - .

Empaqueta lospmcedimientos máp utilizados en pm- gmmas de seruicio. Un programa de servicio es un elegan- te medio de reutilizar pmcedimientos sin copiarlos ffiicamente en cada programa que los necesihe. Como norma gmeral, si unpradmiento se vaa u~liaar en más de uno o dos pmgra- mas debed empaque%a& en un piogra2a9 de sewiolo.

UGlice el &n&e &&r p@m ooi&o&r la latir-

ma de un programa de sefuicio. Resulta tentador dejar d enlazador que maneje la 5ma del progrsjna de servicio ea- pecificando EDORn*ALL) en el mandato GRTSEVPGM. Pero, a largo plazo, ese procedimiento pvede cmventir el

TarnbiG puede estuaiar la posibilidad de utikm W- vas de oompila~i6n condicionales que le permitan utüizar el prototipo del fuente del prneedimiento real en vez de utilizar un miembro lCOPY universal. Con &S &niea se evita in- clUnprototipos que nose u&arán en el proceso de compiia- ción (aunque la ejenición no se verá penalizada por emplear prototipos queno %vayati sutilizar dnr- lacompilación)).

Incúcya las declumiones de eawtan&s de icn inódir- lo en el m h miembro IWPY que los prototipos de ese módulo. Si luego hace i-efereneia al miembro /COPY en al@ módulo M a g a referencia al módulo aLwe selama, habrá"globahadrf ia dedaraciím de esas eomatantes,

Utilhe IMPORT y BXPORl' solamenfe pan, elemen- to# @e datos gZohaÉes. Les paiabrw clave IMPCIRT y E X P O R T campar% datos en%relos prmdimieutos de un -sin tener que pasar explicitamenbias datos como parámetros. En o t m palabrasas ofrecen una %6erfaz uculta%ntre procedimientog Limítese a utilizar estas pala- bras clave con los elementos de datos que son realmente globales del programa (generalmente, valores que se definen una vez y que no se modifican nunca más).

Centralice las dkkwacil~ne~ Con RPG N, finalmente tenemos un área del fuente del pro- grama en el que declarar todas las variables y constantes asociadas con el programa. Utilice las especificaciones D para

Page 3: Mejores Practicas en Programación RPG IV según Bryan Meyers

orgarii~ar W s las declaraciones-en un sololugar Dentzo de las @caciones D, ~ t r g d c e sus definiciones en un arden predecfle, por ejemplo, por.% de definición:

prototipo para el procedimiento principal intcrfaz de procedimiento para el procedimiento principal okas detiníciones de rotot tipos mnhntes m nombre estructnrw de datos variables independientes

Para cada tipo de deñtiición, escriba las deelaradotle~ por orden alfab&ico.

En vez de uti lkw Eüerales, dectaGelos como 6astan- tes con mimbre. Esta tédm ayuda a documentar el código y facilita su manteMenb. 'Una excepción obvia a esta re- gla es el uso permitido de O y 1 si tiene fientido en el contexto de una sentencia. Por ejemplo, si va a inicializar un campo acumulador o a incrementar un contador, es correcto utilizar mOamlenelfnen+e,

Sa* loe nombres de bs elementos de datos para m&om la legib%dad y docummte lw estruetums de datoa. A diferencia de muohas obras enbadas de 113>6, el nombre $e un elemento delbido no necesita ajnstam a la izquierda en las especiñcaciones D (Figura 2). Saque parti. do a wta caraeterístieapara ayudar $ documentar el código. Para mejmar la legibilidad, deje siempre la w1~mna 7 en

blanco. Esta misma regla, dejarla col& 7 en blanco, tam- bién es aplicablé a las~espesiñmciones H.

UtiZtce .tsc notacuSn de longitud en Zwar da lo nota- ci6nposbional en Cas da~1~mioí ies & es&mtirm d~ dofoa. Las espeañcaciones D pezmiten escribir campos con posiciones i n i a e s y ñnales conwetas o simplemente con la longitud del campo. Para evitm confusiones ymejorar la do- mantación del campo, utiIice la notactón de longitud sisháticamen%e. Por eJemplo, eseriba:

en lugar de

Utílice la notación p~icional solamente si la posición real

qiie ilevan n untcampa o a una posición denbo de un campo. UWizar la notaciónaosiciomi es preferible a ut&m varia- bles "de r&ueno* ir&eceaariae .& la notación de lonpikud. Aunque, ineluao con lanotaci6n psicional, pieme en Ia posi- bilidad de mperponer la variable ddarada posicioaalmente con otra variable dedarada con la n~tación de longitud pana documentar mejor la variableo como rnuesba la Figiua 3.

18 ServerNDWS JUNIO-JULIO 2M15

Criando se deílnen wgos de soiapamiento, utilicela pala- bra olaqe OVEIUAY en lugar de la notaai6n posicional. La palabra clave OVEIELAY fiineula e%pEcitamente la declara- ei6n deuna uaziabb "hijaa con la desu "padrey. OVERLAX M

sólo documenCa esta relación, sino que sila variable padre se mueve a otro lugar del &digo del programa, la vafiable w a la s&á.

Evite wtiZTzar mirices de tierno de ejecución. Pl me- dida que sava deacnmponiendo un p&gr'amá enprocedimipn- tos individualesJ rasulta de ayuda que todas las piezas de código relacionadas seso fkica y lógicameate independien- tes. En ia p~ogramación tradioional de una m a t h de tiempo de ejedución, la definicidn de la matriz e&$ separada de los datos de la matriz m, tal ves, d e s de líneas de código del programa. Una so¡ución mejor sería programar la Gatriz dentro de una estructura de datos Wi(~igwca 41.

Eoite u t i l k ~ esWWras &datos de apartcih m&l- tiple. La eatmrotrirade datos de matrices del telease V a es mía co~s$nieción mejor, puesto que utiliza una notación esfhdar de matrices en ef programa, no limita el procesa a una sola aparición eri la &m línea y permite tratar con esas i-ciaa en que las matrices anidadas (de m61tipiea dimenaioms) nnos seo útiles.

Utilice estructuras de datoa QUALiFIED. Las estluetnras de datoa QUALIFIsD obliga a caIífic&f

los nombres de ljus ~~bcampos eoa el nombre d d a structu- radedatos twr eiempio,Qiente.Nombre, o CIiente.Direoaionl. . - . . Esta caracteristica no sólo proporciona una buena documen- tación para el elemento de datos, indicándonos YU origen, fiino que tambih nos permite tener subcampos con el mismo nom- bre en ecitructuras de datos distintas (por ejemplo, Cliente.Nombre, Empleado.Nornbre). Para definir una estruc- tura de datos calificada, utilice la palabra clave QUALIFIED en su Cíefínición.

Las palabras clave JRBEDS y LBEREC NSRa) hmbién son priícticas cugndo una ~stzuetura de datas "heradao ms subcampos de otra eetrudtnra de datos o de un formato de registro. Además, en el ~ekese V5R2 pueden codtr01mse los s u b c m o s 4ue aeareceh en una-estrmtura de datos IBEIi6C o & una &tm&ma de datos deseritáexbernamen- te, espeañoando *&L, *INPUT, *OUTPUT o "HEP.

Page 4: Mejores Practicas en Programación RPG IV según Bryan Meyers

AnnpI'br lor ~~ de demmmm - .. on Tal vez, el aspecto más importmte del estilo de programa- ción tiene que ver con los nombres quesele dan a los elemen- tos de datos (por demplo, lasi variables o las constantes con nombre) y a las ru tha~ . Establezca wnvenios de denomina- ción que vayan m& a U de los tradicionales seis caracteres, para identificar completamente las variables y otros iden- tiñcadores. Esos caraderes extra pueden marcar la diferen- cia entre elYcÓdigo' de un progratüa y una 'descripci6n" del mismo. Cuando ponga nombre a un elemento, asegrirese de

que d e s d e complefa y fielmente al elemento. E1 nom- bre debeeer meqirmoca, fanl de leer y obvio. Aunque debería aprovecharla posWidad que ofrece RFG N de utiüzar nom- breshrgos, no los estienda demasiado. Una longitud de en- tre 10 y 14 caracteres suele ser svficíente; 10s demayor longi- tud pueden no ser prácticm en muchas especificaciones.

Cuando 0% nombre a un elemento de datos, describa el elemento. Cuando se da nombre a un procedimiento con un valor de retorno, denomine al procedimiento a partir del valor de retorno a utilice un convenio de denominación "geff set" dependiendo de si el procedimiento obtiene u asigna un valor de datos.

En el caso de subrutinas o procedimientos sin un valor de retorno, utilice una sintaxis de tipo verbolobjeto (parecida a la de los mandatos de CL) para describir el proceso. Manten- ga un diceipnario de nombres, verhos y objetos, y ntiIice el diccionario para estandarizar los convenios de denominaci6n.

CumuEb escriba un nombre simoólico en IEPG, uWce las mayrfseulas y las mi>uisculaspam chdficar el sig- nificado g el aso del elemento mmbnrdo. RPG permite escribir el código fuente enmaBhe,nilas y &úsculas. Utilice esta caraeteristica para cl&car los datos especiñcados. En el caso de las palabras y las operaciones reservadas de RPG, trate de escribir todos los caracteres en mayúsculas.

Eutte &!izar cwacteres eqxwinks (por Gempb, 63, # o $1 en el mmbre de un elemento de datos. Aigunos de estos caracteres pueden producir error68 de compi¡ación en algunos juegos de baraderes. Aunpue RPG Fpermite d i - zar el signo de subrayado 0 en unnombre, puede evitar uti- lizar este cwácter empleando combinaciones de mayúsculas y miniisculas con inteiipencia.

FxrlMr aádb sin indicaderes Históricament<los indicadores haasido una caraekerística que identíñcaba la sintaxis de RPG, pero con RPG IV se es- tá~ comnrtiendo rápidamente en reliquias de otra Wa. Redu- cirla utilizaciún de mdicadores en un programa bien podría ser la oosa m& importante que pueda hacer para mejorar la legibilidad del programa.

Elimine los indicadores nummicox del fuente de RPG. RPG iV elimina completamente la necesidad de utilizar indieadores de candiciún e indicadores deresultado, y no per- mite utilizarlos en las especiñeaciones de formato libre. La estructura de datos de indieadores (palabra clave INDDS) y cierto nrfmero de funciones incorporadas @IF) conviertes en obsoletos los indicadores num6ricos predeñnidos. Recuerde

que puede indicar condicione3 de excepción de archivos con BIF de manejo de errores (como YlrEOE: %ERROR o %FOU?;Di y nn expansor de operacidn E para evitar el empleo de indieadores.

Si debe utilizar indieadores, déles un nombre. RPC N admite un tip de datas booleano (N) que cumple el mismo objetivo que un indicador. Puede utilizar la palabra clava INaDS con una especificación de archivo de pantalla con el ñn de asociar una estructura de datos con los indioadores para un archivo de pantalla o deimpresora; después, puede asignar nombres descriptivos a los indieadores.

Incluya una descripción de los indicadores que utili- ce. Incluso después de haber eIiminado los indicadores nu- merados, puede que quede un puñado de indicadores predeñnidos (por ejemplo, los indioadores de ruptura de ni- vel LO a L9, o los indicadores externos U1 a U@. Es espeeid- mente importante para documentar esos mdicadores porque su propósito no suele ser obvio simplementeleyendo el h.%- go. E1 prefacio es un buen sitio para enuinerarlos.

téanicas de prograrnaci6n estmcturada Déle a los progtamadores que le suceder& la posibilidad de entender cómo funciona su programa implementando siem- pre técnicas de programacidn estructurada. Loa códigos de operación "es;tnrcturadosn -m, DO& DOW y WHEN- ad- m&n las expresiones de formato libre, lo que los h e e más IegibIes que sus predecesores de formato $0. En general, si un d i g o de operación ofrece una alternativa de formato li- bre, úsela. Esta regla e$ aplicable al mídigo de operaei6n DO; la operaci6n FQR de formato libre suele ser una opcióh me- jor. Por cierto, nunea utilice indicadgres para condici~nar c6- digos de operación estructurados, ¿de acuerdo? Vale.

No utilice GOTO. CABm ni COMP. En su lu~ar. mti- túyalos por una altekabiva esestrMda, como s&ien&s IF anidadas ovariables de estado para dar salto^ en el &ligo o para dirigir un programahacia una ubicación concreta. Para dar saltos, utilice DOU, DOW p FOR. Nunca programe su8 bucles comparando y saltando con GOMP (ni siquiera~on IF) y GOTO. Utilice ITER pararepetir unaiteración de un bucle y use LEAVE o LEAVESR para S& de fomprematura de bucles a subrutinas, respectivamente.

Efechie oomparaciones multirila con SELECTVHENI OTEERlENDSL. Los bloques de código iFm/EIlB/ENDiF profundamente anidados son diñciies de leer y aaoban pro-

Page 5: Mejores Practicas en Programación RPG IV según Bryan Meyers

vocandouha a d a d d h irunmejable de ENDB al final del grupo. ELSEIF mejoza alga la Bltuación, pero SELECTI WBEWIOTHEIC suele ser una conatrncci6n mejor y m&ver- sátil. Elmismo maneja se puede dar para el código de opera- ción obsoleto O&; utilice en su lugar SELECT/WHENl

IRM ha mejorado muehisimo la capacidad de KPG IV de mnnipular series de caraderes. Muchos de los tmcos que te- iiia G e utilizar mn versiones a n t a t o s de @U han queda- do obsoletos. Modernice su c6&@ fuente mando partido a esas nuevas caractehieas.

Utiliae una con@atzte can nobsbrepma deeli~0.r &a constante de tUpo serie de canacteres en ver de mhnaeenarla en una matriz o tabla D w l m una serie de meteres (por ejemplo, una sexie de caradere8 de un mandato de dL) como una constante mn nombre permite hacer referencia a 4sta directamente en vez de obligarle a hacer referencia a l a serie medlante sh nombre de matriz e índice. Utilice una canstante con noplbre para deelazar un valor que no espere que vaya a e a m b dnrante la ejecucidn del programa.

Evite u t i th r mafriceti 4 eshucflrras de datos PWU manipular series de caracteres y texto. En su lugar, utili- ce los nuevos códigos de operación de manipulación de serie8 de cara&eres yto BIP.

Utiitce eqpmsiones de osagnaO15n de fo171wctO libre EV%L siempre que puedapara manjpuliwserks de sw meteres. Cuando se utiliza mn series de caraoteres, EVAL generalmente equivale al cédigo de operación MOVEUP). Si no desea que el resuttado se rellene mii blancos, utiüce L24 fiuiciopes %SUBST o %REPLACE.

U t ü k cawpos de Songifusl variabte para siiqEifi- cm el m 4 0 de las series de caracteres. UWm campo9

de longitud variable como parhnetFo8 CONST o VALUE para todos los subprocedimientos de manejo de emes , asi como para los eampsde krabajo. El código no s6b tiene mejor pin- ta (al e h i u a r la función %TRIM, por ejamplo), sino que tam- bién es mas rápido que si se u'cilizaran campos de longitud &a. Por ejemplo, utilice el código de la Fígura 5A en lugar del de la Figura 5B.

Un buen estilo de prugramakn pnede tener una W d a d doemnencal, ayudando a otrus a entender el codigB fuen'ke. Si utiliza buenas~léenicas de programación,descubrirá que'me- nos es más" cuando se trata de comentar el código fuente. Demasiados comentarios sun tan malos como demasiados -IOCOS. A continuación se ofrecen dgww directrices concre as sobre los camentarios. UtfEke c o m n t h 11 zi&ognenáe. ElPG Wutiliza aho-

.a comentarios que empiezan con dos caracteres de barra nclinada U/) en vez del tradicional asterisco (*) en la mlum- ia 7. En el código de formato libre, que no permitc utilizar asteriscosos el comentario puede empezar en cualquier mlum- na entre la 8 y la 90, e incluso puede estar en la misma bea que Instnicdotiec ejeouhbles exisbnbs.

El nuevo formato de comentario también puede sustituir al asberisco en las espe&cacionea de formato ñjo, pero el mmentario debe esestar en una Enea propia. Par razones de cehereneia, utilice úoicamente el formato nuevo, incluso en las espeoificationes de fomto 6jo (Figura 6).

Utizice mmentrctibs para acla;nUl. d cedfigo, no p a m - . .

repetirlo. Los comentarios que meramente repiten el código aumentan el tamafm del programa pero no su valor. En gene- ral, debería utilizar eumentarios sólo por tres motivos:

proporcionm un resumen del programa o del procedimien- to dar un fitulo a una subrutina, procedimiento u otra sección del cam explicar una técnica que no es obviaal leer el código fuente

Pncluya siempre un breue resumen al inicio de un promama o umceáimie&oe Este praiam debe incluir la

a el titulo del programa o del procedimiento a una breve descripción del objetivo del programa o del pro-

cedimiento a una mnologta de los cambios queincluyan la fecha, el nom-

bre del oromamador Y el moti~o de cada cambio - - a un resumen del uso de indicadores

una descripción de la interfae del ymedimieuto (valor de retorno y parámetros)

r un ejemplo de cómo Uamar al procedimiento

U t k e c i m m t ~ M s de f6po %aa <Ze marcadoresm pam &idi'r seceio~spFinaipaíes del oódigo. Par ejem- 210, sin duda debe sepafa? con h e a s de guiones (-)las decla- racionees, el pmcedimienfa prineipal, Wdw las stlbmtinas y los subpmcedimientOs. Ideatiñque cada sección para fa& tw su Lmhaeih.

JUNIO-JULIO 2005 SenerNEWá 21

Page 6: Mejores Practicas en Programación RPG IV según Bryan Meyers

Utilice lineas en blanco para agrupar ltneas de có- digo fuente mlacionadas y hacerlas destacafi En gene- ral, deberia utilizar línea6 completamente en blanco en lu- gar de líneas de comentarios en blanco para agrupar Uneas de cbdigo, a menos que sea para crear unbloque de comenta- nos. Utilice sólo una línea en blanco; varias líneas en blanco consecutivas diñcultan la lectura del programa.

Evite los comentarios de y n de linea" a la derecha en las wlumnas 81 a 100. Los comentarios a la derecha suelen repetir el código, pueden perderse durante el mante- nimiento del ptograma y es fácil que queden deshados con respedo a la línea que comentan. Especialmente ahora que los ~ m e n t a r i 0 ~ pueden insertarse en el código, no utilice los comentarios a la derecha.

No se quede obsoleto RPG es un lenguaje viejo. Después de casi 40 años, muchas de sus características originales, obsoletas, siguen estando disponibles. No las utilice.

Elimine los códigos de opemción obsoktos. ¿Cómo se C pueden identíficar los códigos de operación obsoletos? Las

respuesta es sencilla: si la especificación de formato libre no lo admite, el código de operación es obsoleto. Con la presenta- ción de la especiticación de formato libre, IBM aprovechó la oportunidad de simpliñcar RPG reduciendo el número de có- digos de operación por la mitad hasta aproximadamente 60.

Si unafbnción tiene las mismas capmidudes que un código de operación, utilice la función en vez del códi- go de operación. Con algunos códigos de operación se pue- de sustituir una BiF por el código de operación y utilizar la función en una expresión. Las funciones son preferibles si ohcen la misma capacidad que los códigos de operación.

Evite utilizar archivos descrit~sporprograma~ En su lugar, utilice archivos deñuidos externamente, siempre que sea posible.

Utilice tipo8 de doros de ficha Mtiuos pam hbq iar con @has. Líbrese de esas ingeniwas~tinas de fecha y hora que ha recopilado y eustodiado celosamente d m t e años. Las BiF de fecbas de RPG N son m& eficientes, inteligibles y mo- denias.Aunque su base de datos incluya fechas en formatos 'a- tiposn, puede uüiizar las funciones de fecha (por ejemplo, %DATE, %DIFF, %%SUBDT o %DAYSl para manipularlas.

No secwmie los números de las líneas de programa en las columnas 1 a 5. Es bastante probable que nunca más necesite utilizar esas pilas de tarjetas perforadas, por lo que el áreade secuencia delpmgrama es innecesaria. EnRPG N esas columnas son solamente para comentarios. F'aede utilizarlas para identihar líneas modiñcadas de un progra- ma o como niveles de sangrado estructurados, pera tenga presente que esas eolumnas cnrren el mismo peligro que los comentarios a la derecha.

conozcan el truco. Si piensa que debe añadir comentarios para explicar cómo funciona un bloque de código, valore la posibi- lidad de volver a escribii el código para aclarar su propósito, u oculte la complejidad del código en nn procedimiento. El uso de los abshvwd códigos de operación de manipulación de bits (BITON. BITOFF, MnZO, TESTB y TESTZ) pueden ser un signo de que el código fuente necesita actualizarse.

En todas las especificaciones que add tan palabras clave, limitese a utilizar una palabrvr clave por Enea. En vez de diseminar múltipies palabras clave y valores por toda la especificación, el programa será m& fácil de leer y le permitirá aiiadir o suprimir especiñcaciones, si se limita a utilizar en cada línea una palabra clave o, si no, por lo menos que seanpalabras claveque esténmuy relacionadas (por ejem- plo, DATFMT y TIMFTM).

Empiece todas las palabras clave de las especifica- ciones Hen la colurna 8, d e i d la columna 7en blan- ca Al separar la palabra clave de la H obligatoria en la co- lumna 6 se mejora la legibilidad.

Consejo final Aveces no es posible combinar un buen estilo y un buenren- dimiento de la aplicación. Cada vez que se enfrente a un con- flicto entre ambos, opte por el buen estiio. Los programas di- ñules de leer son diñciles de depurar, diñciies de mantener y diñciies de hacer que funcionen bien. La corrección del pro- grama siempre debe estar por delante de la velocidad. Re- cuerde estas amonestacianes de Bnan Kernighan y P.J. Plauger en '!€he Elements of Programming Style":

8 Ponga la corrección por delante de la velocidad de ejecu- d n .

8 Conserve la corrección cuando aumente la velocidad de eje eución.

8 Ponga la claridad por delante de la velocidad de ejecución. 8 No saeriñque la claridad por una pequeña ventaja en la

velocidad.

Directrices varias A c o n ~ a c ~ n se &.e&ces -tilo que pue- Brynn Meyen es redactor técnico de ¡Serres NEWS y autor de varios hbms,

den ayu.darle a mejorar el código en RPG N. como "RPG lV]um+ Start"y"Pmgmmming b RPG IV"@~bI~odos por 29th Swet Press]. Do doses sobre vanos aspectos relooonads con el Series:

Evite utilizar artiFcios de ~fW?ra-ión. pmendmente, en DVD o o tmvés del pmgmmtr de formación de e-Learmng maniobras no les parecerán tan ingeniosas a los que M de iser~es Nenvork

12 ServerNEWS JUNIO-JULIO 2 W