Mejores Prácticas en Desarrollo de Software: Refactorización, Documentación y Control de Versiones

Refactorización

La refactorización es una técnica esencial en la ingeniería del software que consiste en realizar pequeñas transformaciones en el código de un programa para mejorar su estructura interna sin alterar su comportamiento o funcionalidad. Su objetivo principal es optimizar la legibilidad, mantenibilidad y eficiencia del código. Es una tarea que busca limpiar el código, minimizando la posibilidad de introducir errores.

Campos Encapsulados

Se aconseja crear métodos getter y setter (de consulta y asignación, respectivamente) para cada campo definido en una clase. Cuando sea necesario acceder o modificar el valor de un campo, simplemente se invoca al método getter o setter según corresponda.

Refactorizar

Refactorizar implica reestructurar el software aplicando una serie de refactorizaciones sin modificar su comportamiento externo.

Documentación

El proceso de documentación de código es uno de los aspectos más cruciales en la labor de un programador. Documentar el código permite explicar su funcionamiento, paso a paso, de manera que cualquier persona que lea el comentario pueda comprender la finalidad del código. La documentación es fundamental para la detección de errores y para el mantenimiento posterior, que, en muchos casos, es realizado por personas diferentes a las que participaron en su creación.

Javadoc

Los entornos de programación que implementan Java, como Eclipse o NetBeans, incluyen una herramienta que genera páginas HTML de documentación a partir de los comentarios incluidos en el código fuente. Esta herramienta es Javadoc.

Para que Javadoc pueda generar las páginas HTML, es necesario seguir una serie de normas de documentación en el código fuente:

  • Los comentarios Javadoc deben comenzar con /** y terminar con */.
  • Los comentarios pueden ser a nivel de clase, variable o método.
  • La documentación se genera para métodos public y protected.
  • Se pueden usar etiquetas (tags) para documentar diferentes aspectos del código, como los parámetros.

En el lenguaje Java, los criterios de documentación de clases son los establecidos por Javadoc. Dentro de la clase, también se documentan los constructores y los métodos. Al menos se indican las siguientes etiquetas:

  • @param: seguido del nombre del parámetro, se usa para describir cada uno de los parámetros del constructor o método.
  • @return: si el método no es void, se indica lo que devuelve.
  • @exception: se indica el nombre de la excepción, especificando cuáles pueden lanzarse.
  • @throws: se indica el nombre de la excepción, especificando las excepciones que pueden lanzarse.

Convenciones de Nombres

SUN recomienda un estilo de codificación que se sigue en el API de Java y que consiste en:

  • Utilizar nombres descriptivos para las clases, evitando nombres excesivamente largos.
  • Para los nombres de clases, usar la primera letra en mayúscula y las demás en minúscula. Por ejemplo: Empleado.
  • Si el nombre tiene varias palabras, escribirlas juntas (sin guiones ni subrayados) y poner la primera letra de cada palabra en mayúscula. Por ejemplo: InstrumentoMusical.
  • Para los nombres de miembros (datos y métodos), seguir la misma norma, pero con la primera letra de la primera palabra en minúscula. Por ejemplo: registrarOyente.
  • Para las constantes (datos con el modificador final), usar nombres en mayúsculas, separando las palabras con subrayados.

Control de Versiones

Una versión, desde el punto de vista de la evolución, se define como la forma particular de un objeto en un instante o contexto dado. Se denomina revisión cuando se refiere a la evolución en el tiempo.

Para gestionar las distintas versiones que se generan durante el desarrollo de una aplicación, los IDE proporcionan herramientas de Control de Versiones que facilitan el desarrollo en equipo.

Estructura de las Herramientas de Control de Versiones

Una herramienta de control de versiones, como CVS, es un sistema de mantenimiento de código fuente (generalmente, grupos de archivos) extraordinariamente útil para grupos de desarrolladores que trabajan cooperativamente usando algún tipo de red. CVS permite a un grupo de desarrolladores trabajar y modificar concurrentemente archivos organizados en proyectos. Esto significa que dos o más personas pueden modificar un mismo archivo sin que se pierdan los trabajos de ninguna. Además, las operaciones más habituales son muy sencillas de usar.

El sistema de control de versiones está formado por un conjunto de componentes:

  • Repositorio: es el lugar de almacenamiento de los datos de los proyectos. Suele ser un directorio en algún ordenador.
  • Módulo: es un directorio específico del repositorio. Puede identificar una parte del proyecto o el proyecto completo.
  • Revisión: es cada una de las versiones parciales o cambios en los archivos o en el repositorio completo. La evolución del sistema se mide en revisiones. Cada cambio se considera incremental.
  • Etiqueta: información textual que se añade a un conjunto de archivos o a un módulo completo para indicar alguna información importante.
  • Rama: revisiones paralelas de un módulo para efectuar cambios sin afectar la evolución principal. Se suele emplear para pruebas o para mantener los cambios en versiones antiguas.

Las órdenes que se pueden ejecutar son:

  • checkout: obtiene una copia del trabajo para poder trabajar con ella.
  • update: actualiza la copia con los cambios recientes en el repositorio.
  • commit: almacena la copia modificada en el repositorio.
  • abort: abandona los cambios en la copia de trabajo.

Repositorio

El repositorio es la parte fundamental de un sistema de control de versiones. Almacena toda la información y los datos de un proyecto. El repositorio es un almacén general de versiones. En la mayoría de las herramientas de control de versiones, suele ser un directorio. El repositorio centraliza todos los componentes de un mismo sistema, incluyendo las distintas versiones de cada componente. Con el repositorio, se consigue un ahorro de espacio de almacenamiento, ya que se evita guardar por duplicado los elementos que son comunes a varias versiones.

Herramientas de Control de Versiones

Durante el proceso de desarrollo de software, donde todo un equipo de programadores colabora en el desarrollo de un proyecto, los cambios son continuos.

CVS

En el caso del IDE NetBeans, es importante su uso para mantener de forma segura tanto los programas como las pruebas en un repositorio de código. La configuración de CVS puede suponer unos cinco minutos, que, dentro del tiempo de desarrollo de una aplicación, es un tiempo despreciable. Sin embargo, el uso de CVS en NetBeans permite gestionar las distintas versiones del código que se desarrollen y evita pérdidas de datos y de código.

CVS se puede utilizar con NetBeans de tres formas:

  1. Desde la línea de comando CVS, donde se escribirán los comandos CVS y de esta forma se interactuará con el repositorio.
  2. Si CVS está incorporado a NetBeans, se dispone de un conjunto de clases Java que imitan los comandos clásicos de CVS.
  3. Con fórmulas de línea de comandos CVS genéricas basadas en plantillas proporcionadas por el usuario, que son pasadas al shell del sistema operativo.
Subversion

Subversion es un sistema de control de versiones de software libre que se ha convertido en el sustituto natural de CVS. A diferencia de CVS, los archivos versionados no tienen un número de versión independiente; todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en un instante determinado.

Subversion puede acceder al repositorio a través de redes. Esto implica que varias personas pueden acceder, modificar y administrar el mismo conjunto de datos, fomentando así la colaboración. Se puede progresar más rápidamente sin un único conducto por el cual deban pasar todas las modificaciones. Y, puesto que el trabajo se encuentra bajo el control de versiones, no se compromete la calidad del software que se desarrolla.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.