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

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

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

✐<br />

✐<br />

✐<br />

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

✐<br />

Apéndice B. Directrices de Programación<br />

6. Separe al creador de la clase del usuario de la clase (el programador cli<strong>en</strong>te). El<br />

usuario de la clase es el «consumidor» y no necesita o no quiere conocer que<br />

hay d<strong>en</strong>tro de la clase. El creador de la clase debe ser un experto <strong>en</strong> diseño<br />

de clases y escribir la clase para que pueda ser usada por el programador más<br />

inexperto posible, y aún así funcionar de forma robusta <strong>en</strong> la aplicación. El uso<br />

de la librería será s<strong>en</strong>cillo sólo is es transpar<strong>en</strong>te.<br />

7. Cuando cree una clase, utilice nombres tan claros como sea posible. Eo objetivo<br />

debería ser que la interface del programador cli<strong>en</strong>te sea conceptualm<strong>en</strong>te simple.<br />

Int<strong>en</strong>te utilizar nombres tan claros que los com<strong>en</strong>tarios sean innecesarios.<br />

Luego, use sobrecarga de funciones y argum<strong>en</strong>tos por defecto para crear un<br />

interface intuitiva y fácil de usar.<br />

8. El control de acceso permite (al creador de la clase) cambiar tanto como sea<br />

posible <strong>en</strong> el futuro sin afectar al código del cli<strong>en</strong>te <strong>en</strong> el que se usa la clase.<br />

FIXME:Is this light, mant<strong>en</strong>ga todo tan privado como sea posible, y haga pública<br />

solam<strong>en</strong>te la interfaz de la clase, usando siempre métodos <strong>en</strong> lugar de<br />

atributos. Ponga atributos públicos sólo cuando se vea obligado. Si una parte<br />

de su clase debe quedar expuesta a clases derivadas como protegida, proporcione<br />

una interface con funciones <strong>en</strong> lugar de exponer los datos reales. De este<br />

modo, los cambios <strong>en</strong> la implem<strong>en</strong>tación t<strong>en</strong>drán un impacto mínimo <strong>en</strong> las<br />

clases derivadas.<br />

9. FIXME No caiga <strong>en</strong> FIXME:analysis paralysis. Hay algunas cosas que no apr<strong>en</strong>derá<br />

hasta que empiece a codificar y consiga algún tipo de sistema. <strong>C++</strong> ti<strong>en</strong>e<br />

mecanimos de seguridad de fábrica, dejelos trabajar por usted. Sus errores <strong>en</strong><br />

una clase o conjunto de clases no destruirá la integridad del sistema completo.<br />

10. El análisis y diseño debe producir, como mínimo, las clases del sistema, sus<br />

interfaces públicas, y las relaciones con otras clases, especialm<strong>en</strong>te las clases<br />

base. Si su metodología de diseño produce más que eso, preguntese a si mismo<br />

si todas las piezas producidas por la metodología ti<strong>en</strong>e valor respecto al tiempo<br />

de vide del programa. Si no lo ti<strong>en</strong><strong>en</strong>, no mant<strong>en</strong>ga nada que no contribuya a<br />

su productividad, este es un FIXME:fact of life] que muchos métodos de diseño<br />

no ti<strong>en</strong><strong>en</strong> <strong>en</strong> cu<strong>en</strong>ta.<br />

11. Escriba primero el código de las pruebas (antes de escribir la clase), y guardelo<br />

junto a la clase. Automatice la ejecución de las pruebas con un makefile<br />

o herrami<strong>en</strong>ta similar. De este modo, cualquier cambio se puede verificar<br />

automáticam<strong>en</strong>te ejecutando el código de prueba, lo que permite descubrir<br />

los errores inmediatamante. Como sabe que cu<strong>en</strong>ta con esa red de seguridad,<br />

puede arriesgar haci<strong>en</strong>do cambios más grandes cuando descubra la necesidad.<br />

Recuerde que las mejoras más importantes <strong>en</strong> los l<strong>en</strong>guajes provi<strong>en</strong><strong>en</strong> de las<br />

pruebas que hace el compilador: chequeo de tipos, gestión de excepciones, etc.,<br />

pero estas características no puede ir muy lejos. Debe hacer el resto del camino<br />

creando un sistema robusto rell<strong>en</strong>ando las pruebas que verifican las características<br />

específicas de la clase o programa concreto.<br />

12. Escriba primero el código de las pruebas (antes de escribir la clase) para verificar<br />

que el diseño de la clase está completo. Si no puede escribir el código<br />

de pruebas, significa que no sabe que aspecto ti<strong>en</strong>e la clases. En resum<strong>en</strong>, el<br />

echo de escribir las pruebas a m<strong>en</strong>udo desvela características adicionales o restricciones<br />

que necesita la clase - esas características o restricciones no siempre<br />

aparec<strong>en</strong> durante el análisis y diseño.<br />

532<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!