09/12/2015

¿Deberíamos seguir convenciones de codificación al programar?

¿Deberíamos seguir convenciones de codificación al programar?

A la hora de trabajar con un determinado lenguaje de programación o de maquetado, debemos respetar una serie de reglas sintácticas. Estas definen aspectos como el uso de signos de puntuación, las palabras reservadas, los operadores lógicos y la definición de variables, funciones, procedimientos, objetos y otras entidades. Pero estas reglas obligatorias admiten una gran variedad de estilos de escritura. Por ejemplo, algunos programadores pueden preferir declarar cada variable en una línea separada, mientras que otros eligen declarar todas en la misma línea. Si la sintaxis no dice nada al respecto, las dos opciones pueden ser igualmente válidas.

Las convenciones de codificación (coding conventions) son pautas que definen un estilo de programación y determinan el aspecto visual del código fuente. Por ejemplo, aportan normas relativas a los siguientes aspectos:

  • Cómo y cuándo usar comentarios.
  • Uso de tabulaciones o espacios para indentación.
  • Uso apropiado de espacios en blanco.
  • Cómo nombrar apropiadamente archivos, constantes, variables, funciones, clases, métodos y paquetes.
  • En qué orden declarar las variables.
  • Cuál debería ser el largo máximo de las líneas.

Si bien muchos se refieren a estas pautas como «estándares de codificación» (coding standards), elegimos no usar este término porque puede prestarse a confusión. En algunos casos, este término se usa para especificaciones de sintaxis oficiales (como los estándares del W3C), mientras que otros incluyen en esta definición cuestiones no vinculadas al aspecto visual del código, como la elección de un patrón de diseño (por ejemplo, el patrón Modelo-Vista-Controlador). También se habla de «estilos de codificación» (coding styles).

Existen muchas convenciones posibles para cada lenguaje. Podemos basarnos en un estilo ya desarrollado o bien diseñar uno propio para compartir con nuestro equipo de trabajo. Muchas empresas y desarrolladores importantes han publicado los suyos:

Para muchos, el uso de convenciones de codificación tiene las siguientes ventajas:

  • Código fuente más legible, portable, seguro, eficiente, robusto y cohesionado.
  • Mayor velocidad en el desarrollo, con reducción de horas hombre.
  • Mejor coordinación entre los equipos de trabajo. Se evitan discusiones innecesarias.
  • Hace que para un desarrollador resulte más fácil cambiar a otro proyecto o equipo.
  • Hace que para un desarrollador sea más fácil integrarse a un proyecto ya comenzado.
  • Menor cantidad de bugs.
  • Facilita los procesos de revisión de código y la creación de scripts para testing.
  • Es un factor que puede ayudarnos a obtener una certificación de calidad.

Sin embargo, muchos señalan algunos inconvenientes de este enfoque:

  • Para un desarrollador, abandonar su estilo habitual de codificación para aprender otro totalmente nuevo puede llevar tiempo y dilatar el proyecto.
  • La obligación de apegarse a ciertas normas puede restringir la creatividad del desarrollador.
  • Las convenciones de codificación pueden distraernos del objetivo más importante: construir, testear y publicar funcionalidad de manera adecuada.
  • Algunos miembros del equipo de trabajo pueden sentir que el líder del proyecto les impone estas convenciones porque no confía en sus habilidades de programación.

Incluso con sus potenciales desventajas, conocer las convenciones de codificación que se utilizan en equipos exitosos puede ser un buen punto de partida para construir software y sitios web de calidad.

0

angularjs Aplicaciones en Facebook aplicaciones mobile behavioral targeting Botones Call-to-action breadcrumbs breadcrumbs web búsqueda de personal búsqueda facetada Call-to-action buttons Client-side cliente-destacado cms a medida coding comercio electrónico content marketing CSS3 PIE cuanto debe pesar un sitio data-driven web design Datos estructurados Defacement Denegación de servicio Desarrollar una aplicación web desventajas de PhoneGap diseñar newsletters diseño web diseño web argentina diseño web esqueuomórfico Diseño web responsive Diseño web responsivo diseño web santa fe diseño web Smart TV diseño web televisores DOM desde PHP enlaces rotos filtros de búsqueda flash flat web design formularios sitio web fragmentos enriquecidos función de autocompletar futuro de la realidad aumentada html HTML5 html5shiv inbound marketing Initializr interfaces Web para televisores javascript jobs jQuery Mobile Mapbox maquetado html/css maquetador web masonry layout menú de navegación menú desplegable Metodologías ágiles Modernizr MVC Navegación por teclado oferta laboral OpenStreetMap paginas de Facebook Paper js Paper js framework personas Phishing plan de QA Polyfills polymer portfolio-destacados portfolio-inicio programacion de CMS Programadores WordPress página de contacto página de error 404 que es Backbone.js Realidad aumentada Resultados instantáneos server-side skeuomorphic design sliders y usabilidad soporte Internet Explorer Storytelling Underscores usabilidad usabilidad buscadores user-centered design ux velocidad de carga web Vendor prefixes ventajas jQuery Mobile Ventanas integradas versiones antiguas de Internet Explorer WAI-ARIA web components web imprimible Web Semántica WordPress para ecommerce