Sistema web Ayni Sistema Web Ayni ESTÁNDARES DE PROGRAMACIÓN Versión 1.0 Sistema Web Ayni Estándares de Programación Versión: 1.0 Historial de Revisión Fecha 23/08/2011 Versión 1.0 Descripción Versión inicial Autor Jonathan Nieto, Marco Martínez 04/10/2011 2.0 Se modifican descripciones de los componentes Marco Martínez 1 Sistema Web Ayni Estándares de Programación Versión: 1.0 Tabla de Contenido 1. Introducción 3 2. Referencias 3 3. Notaciones 3.1 Camel Case 3.2 Notación C 3.3 Notación para Constantes 3 3 3 3 4. Convenciones de Nombres de Controles 4 5. Convenciones para Nombre de Elementos 5.1 Paquetes 5.2 Clases 5.3 Interfaces 5.4 Métodos 5.5 Variables 5.6 Constantes 5.7 Archivos 5 5 5 5 6 6 8 8 6. Convenciones para Estructuras de Control 9 7. Convenciones para Comentarios 7.1 Comentarios de Documentación 9 10 2 Sistema Web Ayni Estándares de Programación Versión: 1.0 Estándares de Programación 1. Introducción Este documento tiene como finalidad presentar los estándares de programación que se utilizarán para la implementación del presente proyecto. La aplicación de los siguientes lineamientos permitirá estandarizar la estructura y estilo de codificación con el fin de tener un mejor orden y una clara visión, lo cual ayudará a facilitar la lectura y comprensión del código. 2. Referencias 3. Java Programming Style Guidelines, 2008. Geotechnical Software Services. The Code Conventions for the Java Programming Language document, Oracle, 1999. Java Language Specification, Sun Microsystems. Notaciones Se presentan las siguientes notaciones: 3.1 Camel Case Esta notación indica que un conjunto de palabras se escribirán utilizando solo letras mayúsculas y minúsculas para diferenciarlas entre ellas. Por ejemplo, si se desea colocar una variable que indique un “detalle de documento venta”, se obtendrá: detalleDocumentoVenta Se distinguen dos clases, UpperCamelCase en la cual la primera letra de la palabra siempre comienza con mayúscula como: GrupoManejadorBean. Y LowerCamelCase en la cual la primera letra siempre empieza con minúscula como: manejarOperacionSuma. 3.2 Notación C Esta notación indica que un conjunto de palabras se escribirán utilizando solo letras minúsculas y sub-guiones para diferenciarlas entre ellas. Por ejemplo, si se desea colocar una variable que indique un “detalle de documento venta”, se obtendrá:detalle_documento_venta. 3.3 Notación para Constantes La notación para las constantes es semejante a la notación C con la diferencia de que las letras siempre son mayúsculas. Por ejemplo, si se desea colocar una constante que haga alusión al coeficiente del hielo, se tendría: ROZ_HIELO. 3 Sistema Web Ayni Estándares de Programación 4. Versión: 1.0 Convenciones de Nombres de Controles Tipo de Control Prefijo Check box chk Ejemplo chkActions Commandbutton cmb cmbExit CommandLink cml cmlExit Dialog dlg dlgFileOpen DataTable dtb dtbUsers DragDrop drp drpGroups Editor edt edtMsg FileUpload fup fupDoc FileDownload fdw fdwDoc GraphicText gra graEdit Growl grl grlMsg InputText txt txtName InputTextTarea txa txaDescription InputSecret pws pwsSign Layout lyt lytContent LightBox lgb lgbImages Menu mnu mnuOption OutputText lbl lblName Panel pnl pnlGroup PanelGrid pni pniColum PanelGroup pno pnoSpan SelectOneMenu som somItems Schedule sch schTask TabView tbv tbvWiki ToolTip ttp ttpWarning Tree tre treDocs 4 Sistema Web Ayni Estándares de Programación Versión: 5. Convenciones para Nombre de Elementos 5.1 Paquetes 1.0 Paquetes Formato General Nombre del paquete en minúsculas. Declaración Los nombres de los paquetes deberán ser escritos en minúscula y normalmente inicializan con el dominio de la empresa como prefijo, en este caso usaremos el dominio de la pucp seguido del nombre de curso y por último se agrega el nombre que englobe y describa las clases que serán contenidas en ese paquete. Los nombres de los paquetes deberán ser escritos en el idioma inglés. Ejemplo pucp.edu.pe.dp2.groups 5.2 Clases Clases Formato General Nombre de la clase en notación UpperCamelCase. Declaración El nombre debe reflejar la responsabilidad, función, entidad que cumple o representa la clase. Los nombres de las clases deberán ser escritos en el idioma inglés. Ejemplo UDPListener 5.3 Interfaces Interfaces Formato General Nombre de la interface en notación UpperCamelCase agregándole el sufijo “IF” 5 Sistema Web Ayni Estándares de Programación Versión: 1.0 Declaración Aquella clase que implemente una interfaz tendrá que modificar su nombre agregándole un sufijo “Impl” de esta manera rápidamente solo con ver el nombre de la clase se podrá saber que está implementando algún tipo de interfaz. Los nombres de las interfaces deberán ser escritos en el idioma inglés. Ejemplo RemoteClientIF. 5.4 Métodos Métodos Formato General Nombre del método en notación LowerCamelCase Declaración El nombre del método consistirá consistirá en un verbo en infinitivo y la entidad sobre la cual recaiga la acción. Se utiliza la notación LowerCamelCase. Los nombres de los métodos deben ser escritos en idioma inglés. Ejemplo /** * Inserta un título en la clase. * Al ser el título obligatorio, si esnulo o vacío se lanzaráuna excepción. * * @paramtitulo El nuevo título * @throwsIllegalArgumentException Si título es null, está vacío o contiene solo espacios. */ public void setTitle (String sTitle) throws IllegalArgumentException 5.5 Variables Variables Formato General Nombre variable en notación LowerCamelCase Declaración - El Nombre de la variable nos da la descripción de la misma y se dará utilizando la notación LowerCamelCase. - Las variables deben representar lo que van a significar dentro del código para indicar al casual lector la intención de éstas. Las excepciones podrían ser las variables que van dentro de los loop (bucles) como por ejemplo i, j y k. 6 Sistema Web Ayni Estándares de Programación Versión: 1.0 Además se debe considerar como prefijo de las variables una o varias letras que identifiquen explícitamente el tipo. char String c s byte short b Sh int long i l boolean double float bl d f List(herencia) HashMap lst hm String[] as int[] ai a-> arreglo a-> arreglo s--> String i--> int Clases propietarias UserBean usr Grupo grp Los nombres de las variables deben ser escritos en idioma Inglés. Ejemplo Auto autActual Representa una variable que hace referencia al auto actual del tipo Auto. String[] asName Representa a un arreglo de String que contiene nombres. List<Auto> lstCar Representa a una lista que contiene objetos de tipo Auto. 7 Sistema Web Ayni Estándares de Programación 5.6 Versión: 1.0 Constantes Constantes Formato General NOMBRE CONSTANTE + ‘_’ + INDICADOR CONSTANTE Declaración - El Nombre de la constante nos da la descripción de la misma y se declarará totalmente en letras mayúsculas. -El Indicador de la constante nos indica el estado en el cual se encuentra la constante y se declarará totalmente en letras mayúsculas. - Si el nombre de la constante está formado por más de una palabra entonces dichas palabras se separan con un guión bajo (‘_’). Utiliza la notación para constantes. Los nombres de las constantes deben ser escritos en idioma inglés. Ejemplo 5.7 TYPE_ACCEPT 'Representa un constante llamada TIPO, cuyo estado es Aceptado. Archivos Archivos Formato General Declaración file + Nombre del archivo - Los nombres de los archivos deberán ser escritos usando la nomenclatura Camel Case particularmente el tipo lowerCamelCase, como prefijo se utilizará la palabra “file” seguida de una palabra que describa su contenido. Los nombres de las variables de archivos deben ser escritos en idioma inglés. Ejemplo filePrev 8 Sistema Web Ayni Estándares de Programación 6. Versión: 1.0 Convenciones para Estructuras de Control Las estructura de control normalmente contienen una cantidad de una a más sentencias que siempre deberán estar encerradas entre llaves( { } ). Además, si dentro de las sentencias contenidas existiesen otras estructuras de control estas deberán tener un margen mayor izquierdo a la estructura que la contiene. A este margen se le denomina “indentación”. 7. Convenciones para Comentarios Los comentarios a diferencia de las variables, clases, interfaces y métodos pueden ser escritos en idioma español. Tipo de Comentario Descripción Ejemplo Comentarios de bloque Permiten la descripción de ficheros, clases, bloques, estructuras de datos y algoritmos. /** * Esto es un comentario * de bloque */ Comentarios de línea Son comentarios cortos localizados en una sola línea y tabulados al mismo nivel que el código que describen. Si ocupa más de una línea se utilizará un comentario de bloque. Deben estar precedidos por una línea en blanco. Para colocar un comentario de una sola línea se antepondrá dos slash (/) seguido del comentario respectivo. /* Esto es un comentario de línea */ Comentario situado al final de una sentencia de código y en la misma línea. contador++; // se incrementa contador Comentario a final de línea // Esto es otro comentario de línea 9 Sistema Web Ayni Estándares de Programación 7.1 Versión: 1.0 Comentarios de Documentación Se utiliza como método de documentación las etiquetas de la API de javadoc. Estas etiquetas se escriben al principio de cada clase, miembro o método, dependiendo de qué objeto se desee describir, mediante un comentario iniciado con "/**" y acabado con "*/". Algunos ejemplos de etiquetas tenemos a continuación en la imagen 7.1: Imagen 7.1. Etiquetas de Javadoc Ejemplo /** * Clase que representa la entidad Cliente * * @author Jonathan Nieto<[email protected]> * @packageayni * @version 1.0 */ classClienteBeanimplementsSerializable{ } 10