13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 531 — #569<br />

✐<br />

B: Directrices de Programación<br />

Este apéndice es una colección de suger<strong>en</strong>cias para programación<br />

con <strong>C++</strong>. Se han reunido a lo largo de mi experi<strong>en</strong>cia <strong>en</strong> como doc<strong>en</strong>te<br />

y programador y<br />

también de las aportaciones de amigos incluy<strong>en</strong>do a Dan Saks (co-autor junto<br />

a Tom Plum de <strong>C++</strong> Programming Guidelines, Plum Hall, 1991), Scott Meyers (autor<br />

de Effective <strong>C++</strong>, 2ª edición, Addison-Wesley, 1998), and Rob Murray (autor de <strong>C++</strong><br />

Strategies & Tactics, Addison-Wesley, 1993). También, muchos de los consejos están<br />

resumidos a partir del cont<strong>en</strong>ido de Thinking in <strong>C++</strong>.<br />

1. Primero haga que funcione, después hágalo rápido. Esto es cierto incluso si se<br />

está seguro de que una trozo de código es realm<strong>en</strong>te importante y se sabe que<br />

será un cuello de botella es el sistema. No lo haga. Primero, consiga que el sistema<br />

t<strong>en</strong>ga un diseño lo más simple posible. Entonces, si no es sufici<strong>en</strong>tem<strong>en</strong>te<br />

rápido, optimícelo. Casi siempre descubrirá que «su» cuello de botella no es el<br />

problema. Guarde su tiempo para lo verdaderam<strong>en</strong>te importante.<br />

2. La elegancia siempre vale la p<strong>en</strong>a. No es un pasatiempo frívolo. No sólo permite<br />

que un programa sea más fácil de construir y depurar, también es más<br />

fácil de compr<strong>en</strong>der y mant<strong>en</strong>er, y ahí es donde radica su valor económico. Esta<br />

cuestión puede requerir de alguna experi<strong>en</strong>cia para creerselo, porque puede<br />

parecer que mi<strong>en</strong>tras se está haci<strong>en</strong>do un trozo de código elegante, no se es<br />

productivo. La productividad aparece cuando el código se integra sin problemas<br />

<strong>en</strong> el sistema, e incluso cuando se modifica el código o el sistema.<br />

3. Recuerde el principio «divide y v<strong>en</strong>cerás». Si el problema al que se <strong>en</strong>fr<strong>en</strong>ta<br />

es desmasiado confuso, int<strong>en</strong>te imaginar la operación básica del programa se<br />

puede hacer, debido a la exist<strong>en</strong>cia de una «pieza» mágica que hace el trabajo<br />

difícil. Esta «pieza» es un objeto - escriba el código que usa el objeto, después<br />

implem<strong>en</strong>te ese objeto <strong>en</strong>capsulando las partes difíciles <strong>en</strong> otros objetos, etc.<br />

4. No reescriba automáticam<strong>en</strong>te todo su código C a <strong>C++</strong> a m<strong>en</strong>os que necesite un<br />

cambiar significativam<strong>en</strong>te su funcionalidad (es decir, no lo arregle si no está<br />

roto). Recompilar C <strong>en</strong> <strong>C++</strong> es un positivo porque puede revelar errores ocultos.<br />

Sim embargo, tomar código C que funciona bi<strong>en</strong> y reescribirlo <strong>en</strong> <strong>C++</strong> no es la<br />

mejor forma de invertir el tiempo, a m<strong>en</strong>os que la versión <strong>C++</strong> le ofrezca más<br />

oportunidad de reutilizarlo como una clase.<br />

5. Si ti<strong>en</strong>e un gran trozo de código C que necesite cambios, primero aisle las partes<br />

del código que no se modificará, posiblem<strong>en</strong>te <strong>en</strong>volvi<strong>en</strong>do esas funciones<br />

<strong>en</strong> una «clase API» como métodos estáticos. Después ponga aténción al código<br />

que va a cambiar, recolocandolo d<strong>en</strong>tro de clases para facilitar las modificaciones<br />

<strong>en</strong> el proceso de mant<strong>en</strong>imi<strong>en</strong>to.<br />

531<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!