Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estilo Codificacion
Estilo Codificacion
Estndares de codicacin
Manuel Arias Calleja
II
ndice general
1. Estandares de codicacin 1.1. Nombres de cheros . . . . . . . . . . . . . . . 1.2. Organizacin de cheros . . . . . . . . . . . . . 1.2.1. Ficheros de cdigo fuente . . . . . . . . 1.3. Indentacin . . . . . . . . . . . . . . . . . . . . 1.3.1. Lineas largas . . . . . . . . . . . . . . . 1.4. Comentarios . . . . . . . . . . . . . . . . . . . . 1.4.1. Comentarios de implementacin . . . . . 1.4.2. Comentarios de documentacin . . . . . 1.5. Declaraciones . . . . . . . . . . . . . . . . . . . 1.5.1. Nmero de declaraciones por lnea . . . . 1.5.2. Inicializacin . . . . . . . . . . . . . . . 1.5.3. Localizacin . . . . . . . . . . . . . . . 1.5.4. Declaraciones de clases e interfaces . . . 1.6. Sentencias . . . . . . . . . . . . . . . . . . . . . 1.6.1. Sentencias simples . . . . . . . . . . . . 1.6.2. Sentencias compuestas . . . . . . . . . . 1.6.3. Ejemplos: Sentencias if, for, while, do ... try ... catch . . . . . . . . . . . . . . . . 1.6.4. Sentencias de retorno . . . . . . . . . . . 1.7. Espacio en blanco . . . . . . . . . . . . . . . . . 1.7.1. Lneas en blanco . . . . . . . . . . . . . 1.7.2. Caracteres de espacio . . . . . . . . . . . 1.8. Asignacin de nombres . . . . . . . . . . . . . . 1 1 1 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 7 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . while, switch y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
III
IV
Captulo 1
Estandares de codicacin
Se denen estndares de codicacin porque un estilo de programacin homogeneo en un proyecto permite que todos los participantes lo puedan entender en menos tiempo y que el cdigo en consecuencia sea mantenible. Directiva 1 Puede ser que el estandar de documentacin denido no sea perfecto para todas las situaciones. Si esto es as y cree que debe salirse de la norma: Documente los motivos
1.1.
Nombres de cheros
Cdigo fuente: .java Cdigo compilado: .class
Nombres de cheros comunes: README: Resumen de informacin importante relativa al directorio en el que est ubicado
1.2.
Organizacin de cheros
Un chero consta de secciones separadas por lneas en blanco y lneas de comentario, ningn chero debe tener ms de 2000 lneas de cdigo
Ordenacin de las secciones en un chero de cdigo fuente Estas secciones deben ir separadas por una lnea en blanco Sentencia: package xxx.yyy; Sentencias de importacin. Ej: import java.util.ArrayList;. No hay lneas en blanco entre ellas Cdigo de la clase. Va precedido por comentarios tipo javadoc con la siguiente informacin: Prlogo explicativo de la clase (opcional),autor, versin, referencias a otros elementos de codigo si se considera que debe haberlas
1.3. Indentacin
La unidad de indentacin de bloques de sentencias son 4 espacios
||!(condition5 && condition6)) { doSomethingAboutIt(); } // O ESTA if ((condition1 && condition2) || (condition3 && condition4) ||!(condition5 && condition6)) { doSomethingAboutIt(); }
1.4.
Comentarios
Normas generales a seguir en toda documentacin: 1. Los comentarios deben aadir claridad al cdigo. Deben contar el por qu y no el cmo. 2. Deben ser concisos. 3. Idealmente hay que escribir la documentacin antes que el cdigo. Hay dos tipos de comentarios: Comentarios de implementacin y comentarios de documentacin. Los comentarios de implementacin son del tipo: // ... o /* ... */. Los comentarios de documentacin son del tipo: /** ... */. Los comentarios de implementacin describen el cdigo, los de documentacin una visin de ms alto nivel para gente que no tiene el cdigo a mano y que slo quiere usarlo. La informacin de los comentarios no debe ser evidente, deben ser cosas que no estn contenidas en el codigo Los comentarios no deben estar en cajas dibujadas con asteriscos o similar ni deben incluir caracteres extraos
1.4.1.
Comentarios de implementacin
Comentarios de bloque: Al comienzo de cada chero o bloque. No se usan en este proyecto Comentarios de linea: Son comentarios explicativos de una parte pequea del cdigo. Sintaxis: // ... o /* ... */
La indentacin correcta segn Sun es: /** * Comentario sobre la clase A */ public class A { ... } Otras normas que se siguen en el proyecto son: No se documentar lo que sea evidente Siempre se usarn los tags de javadoc para documentar los parmetros y valores de retorno, aunque slo sea para poner su nombre
1.5. Declaraciones
1.5.1. Nmero de declaraciones por lnea
Se debe declarar cada variable en una lnea distinta, de esta forma cada variable se puede comentar por separado. Ejemplo: int level, size; // Mal int level; // Indentation level int size; // Size of table Los arrays se deben declarar de este modo: double[] table; // Bien double []table; // Mal
1.5.2. Inicializacin
Inicializar cada variable en su declaracin a menos que su valor inicial dependa de algn clculo
1.5.3. Localizacin
En el comienzo de los bloques. La nica excepcin es el bucle for. No se deben declarar variables con el mismo nombre que otras en un mtodo 4
1.5.4.
Se siguen estas reglas: No hay espacio entre el nombre del mtodo, el parntesis y la lista de parmetros Se abre la llave { al nal de la misma lnea que la declaracin La llave de } debe aparecer en lnea aparte con la misma indentacin que el mtodo o clase que cierra
1.6.
1.6.1.
Sentencias
Sentencias simples
Cada lnea debe contener una sola sentencia. Ejemplos argv++; // Bien argc++; // Bien argv++; argc++; // Mal
1.6.2.
Sentencias compuestas
Son las que estn entre llaves { y } Deben estar indentadas a un nivel superior que el precedente Todas las sentencias del tipo if o for, while, do ... while debern tener llaves aunque slo contengan una sentencia, de esta forma se evita la introduccin accidental de errores si se aaden posteriormente sentencias
1.6.3.
Ejemplos: Sentencias if, for, while, do ... while, switch y try ... catch
} if ( condition) { statements; } else if (condition) { statements; } else { statements; } Sentencia for y su nueva versin for ( initialization; condition; update) { statements; } for ( initialization; condition; update); La nueva versin del for tiene el siguiente formato for (Declaration : List) { statements; } Ejemplo. Antes: void cancelAll(Collection c) { for (Iterator i = c.iterator(); i.hasNext(); ) { TimerTask tt = (TimerTask) i.next(); tt.cancel(); } } Despus: void cancelAll(Collection c) { for (Object o : c) { ((TimerTask)o).cancel(); } } Sentencia while: while (condition) { statements; } while (condition); 6
Sentencia do-while: do { statements; } while ( condition); La sentencia switch tiene este formato e indentacin switch ( condition) { case ABC: statements; /* El comentario tambien indentado */ case DEF: statements; break; case XYZ: statements; break; default: statements; break; } La sentencia try ... catch try { statements; } catch (ExceptionClass e) { statements; } Si est seguida por nally: try { statements; } catch (ExceptionClass e) { statements; } finally { statements; }
1.6.4.
Sentencias de retorno
No se pondr la expresin de retorno entre parntesis a menos que con ello se gane en claridad 7
4. Evitar en lo posible los nombres largos (menos de 15 letras sera lo ideal) 5. Evitar nombres que dieran en una letra o en el uso de maysculas. 6. Un nombre no debera constar de ms de dos palabras. 7. No usar siglas en los nombres a menos que queden muy largos o sean siglas conocidas por todos. Cada tipo de elemento debe nombrarse con una serie de reglas determinadas. Paquetes: Todo en minsculas. Cada palabra es ms especca que la anterior Clases e interfaces: Nombres. La inicial en mayscula Mtodos: Deben ser verbos. La primera letra de la primera palabra en minsculas, el resto de las palabras empiezan por maysculas Variables: Deben comenzar por minscula. No se utilizar en ningn caso el caracter "_" Constantes: Todo en mayscula. Si son varias palabras, unidas por el caracter "_"