Você está na página 1de 19

Normas de estilo

Programacin en Java

Notacin empleada (I)


Clases
Los nombres de las clases tienen la primera letra mayscula y el resto minsculas. Ejemplo: Coche, Persona. Si el nombre de la clase es un nombre compuesto cada nueva palabra empieza con mayscula. Ejemplo: CuentaBancaria, FiguraGeometrica. Los nombres de las clases se suelen corresponder con sustantivos.

Atributos
Los nombres de los atributos comienzan con minscula, respetando la misma norma que los nombres de las clases en el caso de que su nombre sea compuesto. Ejemplo: nombre, numRuedas. Los nombres de los atributos se suelen corresponder con sustantivos.

Notacin empleada (II)


Mtodos
Los nombres de los mtodos comienzan con minscula y siguen la misma norma que los nombres de las clases en el caso de que su nombre sea compuesto. Ejemplo: escribir, calcularPerimetro. Los mtodos que habitualmente se utilizan para proporcionar acceso a los atributos de la clase se nombran como asignar y obtener (en correspondencia con los equivalentes en ingls set y get). Los nombres de los mtodos se suelen corresponder con verbos de accin. Los nombres empleados no incluyen caracteres acentuados.

Nombres (I)
Utilizar nombres descriptivos para informacin global y nombres cortos para informacin local. int numRuedas; // Numero de ruedas for (indiceElem = 0; indiceElem < numeroElem; indiceElem++) matrizElementos[indiceElem] = indiceElem; for (i = 0; i < numElem; i++) elem[i] = i;

Tener en cuenta el contexto del nombre


.

Nombres (II)
Los nombres deben ser consistentes y evitar la redundancia. class ListaUsuarios{ int numElementosLista, capacidadLista; } lista.capacidadLista; class ListaUsuarios{ int numElem, capacidad; } n = lista.numUsuarios();

Nombres (III)
Conviene utilizar nombres de accin para los mtodos, prestando especial atencin a los que devuelven valores lgicos. if ( ruleta.comprobarParidad() )... if ( ruleta.esPar() )... Los nombres de los mtodos deben indicar todo lo que hace el mtodo y solo lo que hace. int mostrarResultado() {...} void mostrarResultado() {...}

Expresiones y sentencias (I)


La estructura del cdigo debe mostrarse utilizando la tabulacin. for (i=0;i<n;i++) for (j=0;j<m;j++) matriz[i][j]=0; for (i = 0; i < n; i++) for (j = 0; j < m; j++) matriz[i][j] = 0; La utilizacin de los espacios en blanco ayuda a mejorar la legibilidad del cdigo.

Expresiones y sentencias (II)


Utilizar la forma ms simple y natural de las expresiones. if ( !(numPartes > 3) || !(antiguedad < 1) )... if ( (numPartes <= 3) || (antiguedad >= 1) )... Utilizar parntesis aunque no sean estrictamente necesarios siempre y cuando sirvan para resolver ambigedades. bisiesto = y % 4 == 0 && y % 100 != 0 || y % 400 == 0; bisiesto = y%4==0 && y%100!=0 || y%400==0; bisiesto = ((y%4 == 0) && (y%100 != 0)) || (y%400 == 0);

Expresiones y sentencias (III)


Las expresiones demasiado complejas se deben dividir en otras ms simples. x += (xp=(2*k < (n-m) ? c[k+1] : d[k--])); if (2*k < n-m) xp = c[k+1]; else xp = d[k--]; x += xp;

Consistencia (I)
Utilizar la tabulacin y la colocacin de llaves de forma consistente incluso en cdigo de otros programadores. Tratar de utilizar formas convencionales de escribir trozos de cdigo (diferencia entre nativo y no nativo).

10

Consistencia (II)
i = 0; while (i <= n-1) matriz[i++] = 1.0; for (i = 0; i < n; i++) matriz[i] = 1.0; for ( i = 0; i < n; matriz[i++] = 1.0 ) { ; }

11

Consistencia (III)
Las decisiones mltiples se expresan con cadenas if...else if...else. if (args.length == 2) if ( Integer.valueOf(args[0]).intValue() > 0 ) if ( Integer.valueOf(args[1]).intValue() > 0 ) System.out.println("Crear la serie"); else System.out.println("El termino inicial debe ser mayor que cero"); else System.out.println("El factor de multiplicacion debe ser mayor que cero"); else System.out.println("Uso: java Serie termino factor");

12

Consistencia (IV)
if (args.length != 2) System.out.println("Uso: java Serie termino factor"); else if ( Integer.valueOf(args[0]).intValue() <= 0 ) System.out.println("El factor de multiplicacion debe ser mayor que cero"); else if ( Integer.valueOf(args[1]).intValue() <= 0 ) System.out.println("El termino inicial debe ser mayor que cero"); else System.out.println("Crear la serie");

13

Nmeros mgicos
Los nmeros mgicos son, entre otros, las constantes, los tamaos de las matrices, las posiciones de los caracteres o los factores de conversin. Asignar un nombre a cada nmero mgico en forma de una constante. final int MAXFILAS = 24, MAXCOLUMNAS = 80; Evitar las caractersticas especficas de las representaciones de caracteres. if ( c >= 65 && c <= 90) if ( c >= A && c <= Z) if ( Character.isUpperCase(c) ) Utilizar el lenguaje para calcular el tamao de un objeto. char buffer[] = new char[1024]; for (int i = 0; i < buffer.length; i++)...
14

Comentarios (I)
Comentar las clases, los atributos y los mtodos utilizando javadoc. No recargar los comentarios de forma innecesaria. Unos nombres bien elegidos pueden ahorrar comentarios. /* * default */ default:... /* incrementa el valor del contador */ contador++; En lugar de comentar cdigo malo conviene reescribirlo. El buen cdigo necesita menos comentarios que el mal cdigo.

15

Comentarios (II)
Los comentarios deben aclarar, no confundir. /* * Devuelve -1 si s1 esta por encima de s2 en una * lista ordenada ascendentemente, 0 si son iguales * y 1 si s1 est por debajo de s2 */ int compare (String s1, String s2){...} /* Devuelve -1 si s1<s2, 0 si son iguales y 1 si s1>s2 */ Los comentarios no deben contradecir al cdigo. /* * Si la letra es una vocal dbil se contempla * la posibilidad de que exista un diptongo */ if ( (letra == a) || (letra == e) || (letra == i || (letra == o) || (letra == u) )
16

Encapsulacin de datos (I)


Por norma general se deben proteger los atributos de una clase para que el acceso a los mismos se produzca a travs de la interfaz de la clase. Para ello se utiliza la palabra reservada private. class Persona{ private String nombre; ... String obtenerNombre () {...} void asignarNombre (String nombre) {...} }

17

Encapsulacin de datos (II)


Por defecto la visibilidad en Java es de paquete (tambin denominada friendly). package java.util; import java.util.Vector; import java.util.*; Para obtener visibilidad fuera de un paquete se utiliza la palabra reservada public.

18

Normas bsicas
Una clase no puede tener 700.000 mtodos Un mtodo no puede ocupar 20 pginas Declarar los atributos al principio, antes que los mtodos Declarar las variables locales al principio de los bloques, una por lnea y comentadas si su uso no es obvio Utilizar siempre llaves en los if Existen distintas normas de sangrado y escritura, como pueden ser las Java Code Conventions (http://java.sun.com/docs/codeconv/) de Sun.

19

Você também pode gostar