¿Por qué?
|
|
|
¿Qué?
|
|
Análisis | Diseño |
---|---|
analizar los requisitos a través de su refinamiento y estructura para realizar una compresión más precisa de los requisitos, una descripción de los requisitos que es fácil de mantener y ayuda a estructurar el sistema: |
desarrollar enfocados en los requisitos no funcionales y en el dominio de la solución para preparar para la implementación y pruebas del sistema: |
|
|
|
|
¿Para qué?
|
|
|
Objetivos | ||||
---|---|---|---|---|
|
|
|
|
|
|
|
|
¿Cómo?
Sencillez
Divide et impera (divide y vencerás)
— Máxima Latina
Julio César, Napoleón, Imperio Británico, ... |
En igualdad de condiciones, la explicación más sencilla suele ser la correcta
— Navaja de Occam
|
Cualquier tonto inteligente puede hacer cosas más grandes y más complejas … se necesita un toque de genialidad y mucho coraje para moverse en la dirección opuesta"
— Einstein
A. |
El descubrimiento de un orden no es tarea fácil. . . . sin embargo, una vez que el orden ha sido descubierto no hay dificultad alguna en reconocerlo
— Descartes
|
|
|
|
|
|
Reusabilidad: disfrutando de la misma distancia, fórmula, manera, … para ahorrar esfuerzos |
||||
Cuando el grajo vuela bajo, hace un frio del carajo!!! … |
KISS
Antónimos | Antonyms | Libro | Autor |
---|---|---|---|
Mantenlo sencillo, estúpido! |
Keep it simple, stupid! |
En un portaviones?!? |
Kelly Jhonson |
Mantenlo pequeño y sencillo! |
Keep it short and simple |
||
Mantenlo pequeño y simple! |
Keep it small and simple |
||
Comprender el algoritmo |
Understand the Algorithm |
Smell Code (Clean Code) |
Robert Martin |
Antónimos | Antonyms | Libro | Autor |
---|---|---|---|
Código Espagueti |
Spaghetti Code |
Antipatrón de Desarrollo |
William H. Brown et al |
Generalidad Espculativa |
Speculative Generality |
Smell Code -(Refactoring) |
Martin Fowler |
Intenciones obscuras |
Obscured Intent |
Smell Code (Clean Code) |
Robert Martin |
Hay dos maneras de diseñar software: una es hacerlo tan simple que sea obvia su falta de deficiencias, y la otra es hacerlo tan complejo que no haya deficiencias obvias
— C.A.R. Hoare
1980 ACM Turing Award Lecture |
“Sin embargo, no es suficiente para dejar las comillas alrededor de la palabra ‘funciona’. Usted debe saber que la solución es correcta. A menudo, la mejor manera de obtener este conocimiento y comprensión es refactorizar la función en algo que es tan limpio y expresivo que es obvio cómo funciona".
— Martin Fowler
|
La diferencia entre un programador inteligente y un programador profesional es que el profesional entiende que la claridad es el rey. Los profesionales utilizan su potencia para lo bueno y escribir código que otros puedan entender
— Martin Fowler
|
Cualquier tonto puede escribir código que entienda un ordenador. Sólo los buenos programadores escriben código que puedan entender los humanos
— Martin Fowler
Refactoring |
- Violaciones | |
---|---|
|
|
Código Limpio
Clean code | ||
---|---|---|
El código limpio es simple y directo. El código limpio se lee como una prosa bien escrita. El código limpio nunca oscurece la intención del diseñador, sino que está lleno de abstracciones nítidas y líneas directas de control
— Grady Booch
Rational Unified Process |
Sabes que estás trabajando en un código limpio cuando cada rutina que lees resulta ser más o menos lo que esperabas. Puede llamarlo código hermoso cuando el código también hace que parezca que el lenguaje fue creado para el problema
— Ward Cunningham
Wiki |
Duplicación reducida, alta expresividad y construcción temprana de abstracciones simples. Eso es lo que hace que el código sea limpio para mí
— Ron Jeffries
Extreme Programming Installed |
Me gusta que mi código sea elegante y eficiente. La lógica debe ser sencilla para dificultar la ocultación de los errores, las dependencias mínimas para facilitar el mantenimiento, el manejo de errores completo de acuerdo con una estrategia articulada y el rendimiento cercano al óptimo para no tentar a las personas a ensuciar el código con optimizaciones sin principios. El código limpio hace una cosa bien
— Bjarne Stroustrup
The C++ Programming Language |
El código limpio puede ser leído y mejorado por un desarrollador que no sea su autor original. Tiene pruebas unitarias y de aceptación. Tiene nombres significativos. Proporciona una forma en lugar de muchas formas de hacer una sola cosa. Tiene dependencias mínimas, que se definen explícitamente, y proporciona una API clara y mínima
— Dave Thomas
Eclipse |
Podría enumerar todas las cualidades que noto en un código limpio, pero hay una cualidad general que conduce a todas ellas. El código limpio siempre parece haber sido escrito por alguien a quien le importa. No hay nada obvio que puedas hacer para mejorarlo. El autor del código pensó en todas esas cosas, y si intentas imaginar mejoras, volverás a donde estás, sentándote apreciando el código que alguien te dejó, código dejado por alguien que se preocupa profundamente por el artesanía
— Michael Feathers
Working Effectively with Legacy Code |
Itinerario
Temas | Contenidos | Nivel |
---|---|---|
|
Paquetes |
|
|
Prácticas recurrentes |
|
|
Jerarquías de Clasificación |
|
|
Clase y Método |
|
|
Línea |
Sintesis
Bibliografía
Obra, Autor y Edición | Portada | Obra, Autor y Edición | Portada |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ponente
|
|
|