Convenciones de Código Estándar Versión 1.2 Convenciones de Código Versión 1.2 Tipo de Documento: Estandar Subtipo: No aplicable Etapa: (60) Publicación Lenguaje: Español Identificador de documento: E:\Empresa\Proyectos internos\SPI\Embrion\Entregables\Standards\Convenciones de Codigo v.1.1.doc Confidencial 1 Convenciones de Código Estándar Versión 1.2 Revisiones Fecha 2003-08-12 2003-08-18 2003-08-22 Confidencial Revisión 1.0 1.1 1.2 Descripción Documento Inicial Revisión Revisión y corrección Autor A. Mirol M. Pavlovic A. Mirol 2 Convenciones de Código Estándar Versión 1.2 Tabla de Contenidos 1 2 3 Introducción ......................................................................................... 4 Objetivos .............................................................................................. 4 Marco de aplicación ............................................................................... 4 3.1 Áreas afectadas ................................................................................ 4 3.2 Vigencia .......................................................................................... 4 3.3 Distribución ..................................................................................... 4 4 Convenciones ........................................................................................ 4 4.1 Estilos de mayúsculas ....................................................................... 4 4.2 Base de datos ................................................................................ 10 4.3 Instrucciones de nomenclatura para facilitar la trazabilidad .................. 14 Confidencial 3 Convenciones de Código Estándar Versión 1.2 1 Introducción El documento representa el estándar interno para convenciones de programación. 2 Objetivos El objetivo de este documento es proporcionar la descripción de convenciones de código para los siguentes lenguajes: VB, VB Script, Jscript, SQL 3 3.1 Marco de aplicación Áreas afectadas Centro de desarrollo de KT. 3.2 Vigencia Norma emitida el: Fecha de vigencia: 3.3 Distribución Empresa completa. 4 4.1 Convenciones Estilos de mayúsculas Utilice las tres convenciones siguientes para poner en mayúsculas los identificadores. 4.1.1 Mayúsculas y minúsculas Pascal La primera letra del identificador y la primera letra de las siguientes palabras concatenadas están en mayúsculas. El estilo de mayúsculas y minúsculas Pascal se puede utilizar en identificadores de tres o más caracteres. Por ejemplo: CuentaSaldo TransaccionNro TransaccionLog En el caso de las Interfaces agregue una I una Mayúscula al comienzo del nombre. Por ejemplo: ITransaccionLog Confidencial 4 Convenciones de Código Estándar Versión 1.2 4.1.2 Mayúsculas y minúsculas Camel La primera letra del identificador está en minúscula y la primera letra de las siguientes palabras concatenadas en mayúscula. Se utiliza para los nombres de variables y parámetros. Por ejemplo: mvarCuentaSaldo pvarTransaccionNro Mayúsculas Todas las letras del identificador van en mayúsculas. Utilice esta convención sólo para identificadores que estén formados por dos o menos letras. Por ejemplo: AccesoDB Además, utilice mayúsculas en las constantes. En general, estos símbolos no deben ser visibles fuera del componente en el que se utilizan. Por ejemplo: ERR_USUARIO_INEXISTENTE En la tabla siguiente se resumen las reglas de uso de mayúsculas y se proporcionan ejemplos de los diferentes tipos de identificadores. Identificador Uso de mayúsculas o minúsculas Ejemplo Clase Pascal Interfaz Pascal Tipo Enum Pascal Error Valores enum Pascal ErrorTecnico Constantes TransaccionLog ITransaccionLog Nota: Comienza siempre con el prefijo I ERR_USUARIO_INEXISTENTE Evento Pascal ValueChange Método Pascal SetParametro Propiedad Pascal Nombre Parámetro Camel pvarTransaccionNro Variable Módulo Camel mvarCuentaNro Variable Procedimiento Camel Confidencial wvarCuentaNro 5 Convenciones de Código Estándar Versión 1.2 4.1.3 Distinción de mayúsculas y minúsculas (para lenguajes que así lo permitan) Para evitar confusiones y garantizar la interoperación entre lenguajes, siga estas reglas con respecto a la distinción entre mayúsculas y minúsculas: No utilice nombres que requieran distinción entre mayúsculas y minúsculas. Los componentes se deben poder utilizar en los lenguajes que distinguen, y en los que no distinguen, entre mayúsculas y minúsculas. Los lenguajes que no hacen esta distinción no pueden diferenciar, dentro del mismo contexto, dos nombres que difieren sólo en el uso de mayúsculas y minúsculas. Por consiguiente, se debe evitar esta situación en los componentes o clases creados. No debe crear una función con nombres de parámetros que difieran sólo en las mayúsculas y minúsculas. El siguiente ejemplo es incorrecto. void MiFuncion(string a, string A) No debe crear un tipo con nombres de propiedades que difieran sólo en las mayúsculas y minúsculas. En el siguiente ejemplo, int Color y int COLOR son nombres de propiedades incorrectos ya que difieren sólo en el uso de las mayúsculas y minúsculas. int Color {get, set} int COLOR {get, set} No debe crear un tipo con nombres de métodos que difieran sólo en las mayúsculas y minúsculas. En el siguiente ejemplo, calcular y Calcular son nombres de métodos incorrectos ya que difieren sólo en el uso de las mayúsculas y minúsculas. void calcular() void Calcular() 4.1.4 Abreviaturas Para evitar confusiones y garantizar la interoperación entre lenguajes, siga estas reglas con respecto a la utilización de abreviaturas: Confidencial No utilice abreviaturas ni contracciones como parte de identificadores. Por ejemplo, utilice GetWindow en vez de GetWin. nombres de No utilice acrónimos que no estén aceptados en el campo de la informática. Si es necesario, utilice acrónimos conocidos para reemplazar nombres en frases largas. Por ejemplo, utilice UI para interfaz de usuario y OLAP para procesamiento analítico en línea. Cuando utilice acrónimos, utilice el estilo de mayúsculas y minúsculas Pascal o Camel en acrónimos de más de dos caracteres. Por ejemplo, use HtmlButton o htmlButton. Sin embargo, deberá utilizar mayúsculas en acrónimos que tengan sólo dos caracteres, por ejemplo System.IO en vez de System.Io. 6 Convenciones de Código Estándar Versión 1.2 4.1.5 No utilice abreviaturas en nombres de identificadores o parámetros. Si tiene que utilizar abreviaturas, utilice las Mayúsculas y minúsculas Camel en abreviaturas de dos o más caracteres, aunque esto contradiga la abreviatura estándar de la palabra. Instrucciones de nomenclatura de clases En las reglas siguientes se describen las instrucciones de nomenclatura de clases: 4.1.6 Utilice un sustantivo o un sintagma nominal para asignar un nombre a una clase. Utilice el estilo de Mayúsculas y minúsculas Pascal. Utilice las abreviaturas con moderación. No utilice un prefijo de tipo, como C para clase, en un nombre de clase. Utilice, por ejemplo, el nombre de clase FileStream en vez de CFileStream. No utilice el carácter de subrayado (_). De vez en cuando, es necesario proporcionar un nombre de clase que comience con la letra I, aunque la clase no sea una interfaz. Esto es correcto siempre que I sea la primera letra de una palabra que forme parte del nombre de la clase. Por ejemplo, IdentityStore es un nombre de clase correcto. Instrucciones de nomenclatura de interfaces En las reglas siguientes se describen las pautas de nomenclatura de interfaces: 4.1.7 Asigne nombres a interfaces utilizando sustantivos, sintagmas nominales o adjetivos que describan su comportamiento. Utilice el estilo de Mayúsculas y minúsculas Pascal. Utilice las abreviaturas con moderación. Incluya un prefijo con la letra I en los nombres de interfaces para indicar que el tipo es una interfaz. Utilice nombres similares cuando defina un par clase/interfaz, donde la clase es una implementación estándar de la interfaz. Los nombres deben ser distintos sólo en el prefijo I del nombre de la interfaz. No utilice el carácter de subrayado (_). Instrucciones de nomenclatura de tipos de enumeración En las reglas siguientes enumeraciones: Confidencial se describen las instrucciones de nomenclatura de Utilice el estilo de Mayúsculas y minúsculas Pascal en los nombres de valores y tipos Enum. Utilice las abreviaturas con moderación. 7 Convenciones de Código Estándar Versión 1.2 4.1.8 No utilice el sufijo Enum en nombres de tipo Enum. Utilice un nombre en singular para la mayoría de los tipos Enum. Instrucciones de nomenclatura de métodos En las reglas siguientes se describen las instrucciones de nomenclatura de métodos: Utilice verbos o sintagmas verbales al asignar nombres a los métodos. Utilice el estilo de Mayúsculas y minúsculas Pascal. No utilice el carácter de subrayado (_). (Se exceptúa el caso de implementación de interfaces). A continuación, se incluyen algunos ejemplos de métodos con nombres correctos: Ejecutar() GetParametro() SetParametro() 4.1.9 Instrucciones de nomenclatura de propiedades En las reglas propiedades: siguientes se describen las instrucciones de nomenclatura de Utilice un sustantivo o un sintagma nominal al asignar nombres a las propiedades. Utilice el estilo de Mayúsculas y minúsculas Pascal. No utilice la notación húngara. 4.1.10 Instrucciones de nomenclatura de parámetros Es importante seguir estas instrucciones de nomenclatura de parámetros, ya que herramientas de diseño visual que proporcionan ayuda contextual y funcionalidad exploración de clases muestran en el diseñador los nombres de los parámetros métodos a los usuarios. En las reglas siguientes se describen las instrucciones nomenclatura de parámetros: Confidencial las de de de Utilice el estilo de Mayúsculas y minúsculas Camel para los nombres de parámetros. Utilice nombres de parámetros descriptivos. Los nombres de parámetros deben ser lo suficientemente descriptivos como para que el nombre y el tipo del parámetro se puedan utilizar para determinar su significado en la mayoría de los escenarios y permitir a los programadores suministrar los parámetros adecuados. Utilice nombres que describan el significado del parámetro, en vez de nombres que describan el tipo de parámetro. 8 Convenciones de Código Estándar Versión 1.2 Comience el nombre del parámetro con la letra p y a continuación las siguientes tres letras: obj : si es un objeto que no es recordset. rst : si es un recordset. dom : si es un objeto de la biblioteca MSXML.dll xml : si es un string que representa un Xml. var : en los demás casos. De esta forma el parámetro quedará conformado, por ejemplo, como pvarParametroNombre. En el caso de parámetros que representen un objeto utilice el nombre de la clase en conjunción a la reglas anteriores. Por ejemplo, si tenemos una clase denominada Cuenta el parámetro que la representa se nombra como pobjCuenta. Los parámetros deben ir encolumnados y uno por cada fila tanto en la definición del procedimiento como en las llamadas al mismo. A continuación, se incluyen algunos ejemplos de parámetros con nombres correctos: pvarTransaccionNro pdomInput 4.1.11 Instrucciones de nomenclatura de variables En las reglas siguientes se describen las instrucciones de nomenclatura de variables: Utilice el estilo de Mayúsculas y minúsculas Camel. No utilice la notación húngara. Comience el nombre de las variables locales a los procedimientos con la letra w y a continuación las siguientes tres letras: obj : si es un objeto que no es recordset. rst : si es un recordset. dom : si es un objeto de la biblioteca MSXML.dll xml : si es un string que representa un Xml. var : en los demás casos. De esta forma la variable wvarVariableNombre. Confidencial quedará conformada, por ejemplo, como Comience el nombre de las variables de modulo con la letra m y a continuación las siguientes tres letras: 9 Convenciones de Código Estándar Versión 1.2 obj : si es un objeto que no es recordset. rst : si es un recordset. dom : si es un objeto de la biblioteca MSXML.dll xml : si es un string que representa un Xml. var : en los demás casos. De esta forma la variable mvarVariableNombre. quedará conformada, por ejemplo, como Comience el nombre de las variables globales con la letra g y a continuación las siguientes tres letras: obj : si es un objeto que no es recordset. rst : si es un recordset. dom : si es un objeto de la biblioteca MSXML.dll xml : si es un string que representa un Xml. var : en los demás casos. De esta forma la gvarVariableNombre. 4.2 variable quedará conformada, por ejemplo, como En el caso de variable que representen un objeto utilice el nombre de la clase en conjunción a la reglas anteriores. Por ejemplo, si tenemos una clase denominada Cuenta la variable que la representa se nombra como gobjCuenta o mobjCuenta o wobjCuenta dependiendo del scope de la misma. Base de datos 4.2.1 Tablas: En las reglas siguientes se describen las instrucciones de nomenclatura de tablas: Confidencial Utilice un sustantivo o un sintagma nominal para asignar un nombre a una tabla. Utilice el estilo de Mayúsculas y minúsculas Pascal. Utilice las abreviaturas con moderación. No utilice un prefijo de tipo, como T para tabla, en un nombre de tabla. Utilice, por ejemplo, el nombre de tabla Transaccion en vez de TTransacción o T_Transaccion. No utilice el carácter de subrayado (_). Utilice un nombre en singular para el nombre de Tablas. Coloque el nombre de la entidad principal en primer término. Utilice, por ejemplo, el nombre de tabla FacturaEncabezado y FacturaItem en lugar de EncabezadoFactura e ItemFactura. 10 Convenciones de Código Estándar Versión 1.2 Para el caso de tablas de relación que no posean un nombre que las identifique propiamente en el dominio utilice la siguiente regla: Coloque el nombre de la entidad mas representativa en primer término y en la estructura de la tabla respete ese orden al colocar las claves primarias de las tablas relacionadas. A continuación, se incluyen algunos ejemplos de tablas con nombres correctos: Cuenta CuentaSaldo Persona Producto PersonaProducto PersonaProductoTipoCod 4.2.2 Instrucciones de nomenclatura de columnas de tablas En las reglas siguientes se describen las instrucciones de nomenclatura de columnas de tablas: Utilice un sustantivo o un sintagma nominal para asignar un nombre a una columna. Utilice el estilo de Mayúsculas y minúsculas Pascal. Utilice las abreviaturas con moderación. No utilice el carácter de subrayado (_). Siempre que sea posible utilice un nombre en singular para el nombre de Columnas. Utilice el mismo nombre de columna en todas las tablas para items con igual significado semántico. En el caso que un ítem se repita más de una vez, utilice el nombre del ítem más un sufijo que lo diferencie. Por ejemplo: En una tabla tabla se registra el nombre del usuario que creó el registro y el usuario que realizó la última modificacion. Pondremos UsuarioCodC y UsuarioCodM. Coloque el nombre más significativo en primer término. Utilice, por ejemplo, el nombre de columa FacturaNro en lugar de NroFactura. Se definen los siguiente sufijos standard de amplía utilización: Nom: se utiliza como abreviatura de nombre. Por ejemplo: ClienteNom, DocumentoNom. Ape: se utiliza como abreviatura de apellido. Por ejemplo: ClienteApe, PersonaApe. Confidencial 11 Convenciones de Código Estándar Versión 1.2 Nro : se utiliza como abreviatura de Número. No necesariamente debe ser de tipo numérico, denota una infinidad numerable. Por ejemplo: CuentaNro, ClienteNro. Cod: se utiliza como abreviatura de Código. Se aplica a diverso tipo de tipificaciones. Por ejemplo: TransaccionCod, SaldoTipoCod. Des: se utiliza como abreviatura TransaccionDes, SaldoTipoDes. de Descripción. Por ejemplo: Fec : se utiliza como abreviatura de Fecha. Por ejemplo: NacimientoFec, MovimientoFec. Can: se utiliza como abreviatura de Cantidad. Por ejemplo: MovimientoCan. 4.2.3 Instrucciones de nomenclatura de stored procedures En las reglas siguientes se describen las instrucciones de nomenclatura de stored procedures: Utilice un sustantivo o un sintagma nominal para asignar un nombre a una stored procedure en conjunción con los prefijos enumerados más abajo. Utilice el estilo de Mayúsculas y minúsculas Pascal. Utilice las abreviaturas con moderación. Debido a que los stored procedures en general solo deben realizar tareas elementales(salvo que por razones de performance se determine lo contrario), se definen los siguiente prefijos standard: INS_: stored procedure que realiza insert. UPD_: stored procedure que realiza update. ACT_: stored procedure que realiza una actualización, entendiéndose por actualización, en general, un update en caso de existir la fila o un insert si esta no existe. DEL_: stored procedure que realiza delete. Confidencial No utilice el carácter de subrayado (_) con la excepción descripta en el punto anterior. Utilice un nombre en singular para el nombre de stored procedures. Coloque el nombre de la entidad principal en primer término. De existir varios stored procedures que actuan sobre la misma entidad(por ejemplo: sp que devuelven distintas columnas de una tabla) utilice el mismo nombre con el agregado de un número correlativo. 12 Convenciones de Código Estándar Versión 1.2 4.2.4 Instrucciones de nomenclatura de parámetros para stored procedures En las reglas siguientes se describen las instrucciones de nomenclatura de parámetros: Utilice el estilo de Mayúsculas y minúsculas Camel para los nombres de parámetros. Utilice nombres de parámetros descriptivos. Los nombres de parámetros deben ser lo suficientemente descriptivos como para que el nombre y el tipo del parámetro se puedan utilizar para determinar su significado en la mayoría de los escenarios y permitir a los programadores suministrar los parámetros adecuados. En caso de coincidir con una columna utilice el nombre de ésta. Utilice nombres que describan el significado del parámetro, en vez de nombres que describan el tipo de parámetro. Comience el nombre del parámetro con la letra @p. (El arroba es obligatorio en SQLServer). De esta forma el parámetro quedará conformado, por ejemplo, como @pParametroNombre. A continuación, se incluyen algunos ejemplos de parámetros con nombres correctos: @pTransaccionNro @pCuentaNro 4.2.5 Instrucciones de nomenclatura de variables para stored procedures En las reglas siguientes se describen las instrucciones de nomenclatura de variables: Utilice el estilo de Mayúsculas y minúsculas Camel para los nombres de parámetros. Utilice nombres de parámetros descriptivos. Los nombres de parámetros deben ser lo suficientemente descriptivos como para que el nombre y el tipo del parámetro se puedan utilizar para determinar su significado en la mayoría de los escenarios y permitir a los programadores suministrar los parámetros adecuados. Utilice nombres que describan el significado de la variable, en vez de nombres que describan el tipo de parámetro. En caso de coincidir con una columna utilice el nombre de ésta. Si se requiere el uso de más de una variable numérela correlativamente. Comience el nombre del parámetro con la letra @w. (El arroba es obligatorio en SQLServer). De esta forma el parámetro quedará conformado, por ejemplo, como @wParametroNombre. A continuación, se incluyen algunos ejemplos de variables con nombres correctos: @wTransaccionNro @wCuentaNro Confidencial 13 Convenciones de Código Estándar Versión 1.2 @wCuentaNro1 4.3 Instrucciones de nomenclatura para facilitar la trazabilidad A efectos de facilitar la trazabilidad a través de las capas de la aplicación es importante que se mantenga el nombre de los elementos utilizados a lo largo de las mismas. Para ello se debe usar el nombre definido en la Base de Datos A modo de ejemplo, supongamos que en una Tabla Cuenta se define un campo CuentaNro. El mismo tomará los siguientes nombres de variable: En los stored procedures @pCuentaNro sí es un parámetro y @wCuentaNro sí es una variable. En los componentes gvarCuentaNro sí es una variable global, mvarCuentaNro si es una variable definida a nivel módulo y wvarCuentaNro sí es una variable definida dentro de un procedimiento. En las páginas mvarCuentaNro sí es una variable definida a nivel de la página y wvarCuentaNro sí es una variable definida dentro de un procedimiento. En el caso de utilizarse Xml, el nombre del tag es <CuentaNro>. Fin del documento Confidencial 14