11.05.2013 Views

Guía de estilo de programación en C++ estructurado

Guía de estilo de programación en C++ estructurado

Guía de estilo de programación en C++ estructurado

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1 Introducción<br />

En este docum<strong>en</strong>to se explica brevem<strong>en</strong>te, y con ejemplos, cómo escribir programas más legibles.<br />

A lo largo <strong>de</strong> su vida profesional, cualquier programador se plantea la pregunta <strong>de</strong> cómo escribir sus<br />

programas <strong>de</strong> manera que sean más legibles, y por tanto que puedan ser mant<strong>en</strong>idos (corrección <strong>de</strong><br />

errores, ampliación <strong>de</strong> funcionalidad) con facilidad, tanto por él mismo como por otros<br />

programadores (una situación típica <strong>en</strong> cualquier empresa).<br />

Dado que la misma situación <strong>en</strong> cuanto a legibilidad <strong>de</strong> código suele ser resuelta por<br />

distintos programadores <strong>de</strong> la misma forma, pero con distintos matices <strong>de</strong> difer<strong>en</strong>ciación, es<br />

interesante seguir una guía <strong>de</strong> <strong>estilo</strong> que nos explique como otros resolvieron ese mismo problema,<br />

hasta que dicha solución se convirtió <strong>en</strong> un estándar.<br />

2 Indicaciones g<strong>en</strong>erales<br />

El propósito <strong>de</strong> seguir una norma <strong>de</strong> <strong>estilo</strong> es hacer que el código fu<strong>en</strong>te <strong>de</strong> un programa sea tan<br />

legible como sea posible. Así, hay tres puntos básicos que se <strong>de</strong>b<strong>en</strong> cuidar: el espaciado horizontal,<br />

el espaciado vertical y la in<strong>de</strong>ntación. El espaciado horizontal consiste <strong>en</strong> que las líneas <strong>en</strong> las que<br />

esté dividido el código fu<strong>en</strong>te <strong>de</strong>b<strong>en</strong> ser <strong>de</strong> una longitud máxima lo más próxima posible a 80<br />

caracteres, ya que al imprimir el código <strong>en</strong> papel cualquier línea superior a 80 columnas se <strong>de</strong>scarta<br />

automáticam<strong>en</strong>te.<br />

Uno <strong>de</strong> los problemas que se pue<strong>de</strong> <strong>en</strong>contrar al codificar es la manera más correcta para<br />

dividir una línea muy larga. Respuestas comunes a esta pregunta son: antes <strong>de</strong> una subexpresión,<br />

antes <strong>de</strong> un operador, o antes <strong>de</strong> un paréntesis. Por ejemplo:<br />

int x = ( (a * b + c ) / ( c * d * d ) )<br />

+ ( a / ( b * c ) )<br />

+ ( ( 3.1451927 * b ) + d )<br />

;<br />

Los operadores <strong>de</strong>b<strong>en</strong> separarse mediante espacios para mayor claridad, a excepción hecha<br />

<strong>de</strong> operadores unarios como el increm<strong>en</strong>to o <strong>de</strong>crem<strong>en</strong>to, tanto postfijo como prefijo, que suel<strong>en</strong><br />

colocarse pegados al operando al que modifican (lo más típico, por claridad), pero también pue<strong>de</strong>n<br />

colocarse espaciados, a elección <strong>de</strong>l programador.<br />

int x = ++ i;<br />

int y = j++ + ++ x;<br />

El espaciado vertical consiste <strong>en</strong> cuántas líneas ocupa una función o una estructura, <strong>en</strong> el<br />

código fu<strong>en</strong>te. En g<strong>en</strong>eral, es útil autoimponerse un límite <strong>de</strong> una hoja por cada función o<br />

procedimi<strong>en</strong>to. Es extraño, siempre que la misma no consista <strong>en</strong> multitud <strong>de</strong> acciones repetitivas<br />

(como escribir <strong>en</strong> un archivo), que una función bi<strong>en</strong> diseñada ocupe más allá <strong>de</strong> un folio. En caso<br />

contrario, será conv<strong>en</strong>i<strong>en</strong>te consi<strong>de</strong>rar que posiblem<strong>en</strong>te sea interesante subdividirlo <strong>en</strong> varias<br />

subfunciones (probablem<strong>en</strong>te <strong>de</strong> acceso privado).<br />

A<strong>de</strong>más, <strong>en</strong> el espaciado vertical intervi<strong>en</strong><strong>en</strong> las llaves que se emplean para marcar el<br />

comi<strong>en</strong>zo y fin <strong>de</strong>l cuerpo <strong>de</strong> una función, <strong>de</strong> un bucle, ... cada una <strong>de</strong> esas llaves pue<strong>de</strong> llegar a<br />

consumir una línea por sí sola, incluso dos. Así, para salvar algo <strong>de</strong> espacio vertical, se suel<strong>en</strong><br />

mant<strong>en</strong>er las llaves <strong>de</strong> apertura y cierre, cada una <strong>en</strong> una línea, para el cuerpo <strong>de</strong> las funciones, y <strong>en</strong><br />

cambio colocar la llave <strong>de</strong> apertura <strong>en</strong> la misma línea para bucles y estructuras <strong>de</strong> <strong>de</strong>cisión. Por<br />

ejemplo:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!