Una de las destrezas básicas para convertirse en un buen programador consiste en saber optimizar código. Inicialmente, cuando somos profesores novatos, hacemos los programas de la única forma que sabemos, pero, cuando adquirimos experiencia y somos capaces de generar varias, hay que elegir entre todas las posibles soluciones la más eficiente, efectiva, … En resumen, la óptima. De eso se trata la optimización.
Técnicamente, podemos decir que optimización o refactorización es el proceso de cambiar la estructura interna de un software sin alterar su comportamiento externo y se realiza para mejorar la calidad del código, aumentar su legibilidad y mantenibilidad.
Algunas de las características más importantes son:
¿Cuándo refactorizar?
Algunos autores han identificado algunos indicadores que nos van a decir que nuestro código es susceptible de ser refactorizado. Algunos de los más importantes son los siguientes:
En el proceso de refactorización, se siguen una serie de patrones preestablecidos, los más comunes son los siguientes:
Por último, la documentación. Ningún desarrollador puede considerarse bueno si no le da la importancia que corresponde a la documentación. Recuérdese que un programa poco o mal documentado es un mal producto.
Antes de entrar en detalles, algunas frases a tener en cuenta:
“If your program isn’t worth documenting, it probably isn’t worth running” (Si su programa no merece la pena documentarlo, probablemente no merece la pena ejecutarlo). J. Nagler. 1995.
“Do not document bad code - rewrite it” (No documentar código malo—reescribirlo). R. Caron. 2000.
“Write the documentation before you write the code.” (Escribe la documentación antes de escribir el código). S.W. Ambler. 2000.
JavaDoc es la utilidad de Java para extraer y
generar documentación directamente del código en formato HTML. Es muy
recomendable escribir los comentarios del código de acuerdo a las
recomendaciones de Javadoc
, ya que es un estándar ‘de
facto’ y así la documentación será útil. La documentación y el código se
van a incluir dentro del mismo fichero.
Los tipos de comentarios para generar la documentación son:
//
y
terminan con la línea./*
, y
terminan con los caracteres */
. Pueden agrupar a varias
líneas.Javadoc
se colocan entre los delimitadores /**
(dos Asteriscos en la primera línea) y */
, agrupan varias
líneas, y cada línea irá precedida por un *
y deben
colocarse:
Dentro de estos delimitadores se podrá escribir etiquetas HTML. Los comentarios Javadoc están formados por dos partes una descripción seguida de un bloque de tags.
Los tags son etiquetas que describen una característica o propiedad de la documentación en java.
Los tags mas comunes son:
Tag | Descripción | Uso |
---|---|---|
@author | Nombre del desarrollador. | nombre_autor |
@version | Versión del método o clase. | versión |
@param | Definición de un parámetro de un método, es requerido para todos los parámetros del método. | nombre_parametro descripción |
@return | Informa de lo que devuelve el método, no se puede usar en constructores o métodos “void”. | descripción |
@throws | Excepción lanzada por el método, posee un sinónimo de nombre @exception | nombre_clase descripción |
@see | Asocia con otro método o clase. | referencia (#método(); clase#método(); paquete.clase; paquete.clase#método()). |
@since | Especifica la versión del producto | indicativo numerico |
@serial | Describe el significado del campo y sus valores aceptables. Otras formas válidas son @serialField y @serialData | campo_descripcion |
@deprecated | Indica que el método o clase es antigua y que no se recomienda su uso porque posiblemente desaparecerá en versiones posteriores. | descripción |
Un ejemplo de documentación podría ser el siguiente:
/**
* <h2>Clase Empleado, se utiliza para crear y leer empleados de una BD</h2>
* Busca información de javadoc en < a href="http://google.com">GOOGLE</a>
* @see <a href="http://www.google.com">Google</a>
* @version 1-2014
* @author ARM
* @since 1-1-2014 */
public class Empleado {
/** Atributo Nombre del empleado */
private String nombre;
/** Atributo apellido del empleado */
private String apellido;
/** Edad del empleado */
private double salario;
/**
* Constructor con 3 parámetros.
* Crea objetos empleado, con nombre, apellido y salario.
* @param nombre Nombre d e l empleado
* @param apellido Apellido del empleado
* @param salario Salario del empleado */
public Empleado(String nombre, String apellido, double salario).{
this.nombre=nombre;
this.apellido=apellido;
this.salario=salario;
}
//Métodos públicos
/**
* Sube el salario al empleado. * @see Empleado
* @param subida
*
*/
public void subidasalario (double subida) {
salario=salario + subida;
}
//Métodos privados
/**
* Comprueba que e l nombre no este vacío
* @return <ul>
* <li>true: el nombre es una cadena vacía</li>
* <li>false: el nombre no es una cadena vacía</li>
* <ul>
*/
private boolean comprobar(){
if(nombre.equals("")) {
return false;
}
return true;
}
}
La herramienta de línea de comandos de Javadoc
es muy
poderosa pero tiene cierta complejidad.
Ejecutar el comando javadoc
sin ninguna opción o
parámetro dará como resultado un error y los parámetros de salida que
espera.Tendremos que especificar al menos para qué paquete o clase
queremos que se genere la documentación.
Para ello, abrimos una línea de comando y naveguamos al directorio
del proyecto y ,asumiendo que las clases están todas en la carpeta
src
en el directorio del proyecto, dentro de
src
ejecutamos:
javadoc -d doc *
Esto generará documentación en un directorio llamado doc como se
especifica con el indicador –d
. Con el *
generamos la documentación de todo lo contanido en la carpeta
src
.
Utilizar un IDE con la funcionalidad integrada es, por supuesto, más fácil y generalmente recomendado.
Otro de los elementos que contribuye al desarrollo óptimo del software es el uso de un SCV (Sistema de Control de Versiones), un sistema que permite gestionar y mantener versiones de archivos y proyectos de software. Utilizar un sistema de control de versiones es una buena práctica en el desarrollo de software, ya que facilita la colaboración y el seguimiento de los cambios en el proyecto.
Las ventajas del uso de CVS (sus siglas en inglés) son:
El control de versiones se verá mas a fondo en el próximo capítulo.