Acabo de leer en el blog beautifulcode, una interesante entrada de Michael Feathers sobre el control de errores.
El post comienza con éste párrafo, que traduzco libremente: “El control de errores es un poco cómo discutir quién saca la basura. Todos sabemos que hay que hacerlo, pero no dedicamos demasiado tiempo en pensar en cómo hacerlo.”
Habla sobre trusted zones (zonas de confianza), en éstas zonas de nuestro código, no deben existir comprobaciones, únicamente la lógica de lo que estemos desarrollando, de ésta forma conseguimos un código más limpio y mantenible.
Si desarrollas librerías o frameworks, como no tienes control sobre cómo van a ser utilizados, sólo puedes hacerlo de forma confiada tus zonas de confianza no pueden ser muy amplias. Mientras si desarrollas una aplicación, debes tratar de separar el control de errores todo lo que sea posible de la lógica de negocio. El control de errores debe ser una cuestión de diseño, no algo de última hora.
Vamos, que por lo que parece utilizar trusted zones es una idea similar al diseño por contrato, pero sin contrato (sin precondiciones, invariantes o postcondiciones), y así evitar la programación defensiva para tener mejor código, más “beautiful”
December 16th, 2007 at 20:55
Si desarrollas librerías o frameworks, como no tienes control sobre cómo van a ser utilizados, sólo puedes hacerlo de forma confiada.
Para ser más precisos, lo que dice es que no te puedes fiar mucho, y por eso tus “zonas de confianza” no pueden ser muy amplias.
Yo en mi caso, no se si acabo de estar muy de acuerdo ya su explicación es bastante vaga. Por que aunque estoy de acuerdo en que tampoco puedes estar re-re-re-validando los inputs en cada metodo que recibe el mismo parametro, no lo estoy en hacer control de errores “a lo grande”, por que como menciona uno de los comentarios, puede ser que más tarde ese codigo acabe usandose de otra forma saltandose la parte de comprobación. En mi caso es más bien una cuestion de “unidades logicas”.
Si puede ser usado por separado, entonces debe tener su control de errores. Si no, no hay que permitir que pueda ser usado independientemente (metodos privados, etc.)
S!
December 16th, 2007 at 22:45
Hola GreenEyed,
Gracias por el apunte, ya está actualizado:).
En teoría la comprobación de errores sería responsabilidad de quién llama a la “trusted zone”. Yo creo que se puede hacer siempre que se tenga como convención hacerlo así, o que esté documentado.
Una forma de hacer esto, quizás podría ser tener la lógica de negocio como “trusted zone” y por encima una capa que se encargara de las comprobaciones, así se podría separar una unidad lógica y reutilizarla en otro desarrollo.
Saludos!
December 19th, 2007 at 17:31
Estimados,
Este mes me he hecho cargo del area de QA de la empresa y me he dado cuenta que no existe un software o alguna aplicacion que lleve todo el control de errores de los desarrollo que nos pasan, mi consulta es algunos de uds. sabe que software se podria utilizar para ello, el unico que he encontrado es el BugZilla, estamos trabajando para entender su funcionamiento.
desde ya muchas gracias.
December 19th, 2007 at 22:27
Hola Rodrigo,
En mi trabajo utilizamos Mantis(http://www.mantisbt.org/), está desarrollado con php y mysql por defecto, pero por su documentación, se puede utilizar con otros gestores de bases de datos.