El documento describe principios para escribir código limpio y de alta calidad. Recomienda que el código sea fácil de leer, entender y mantener mediante el uso de nombres descriptivos, funciones pequeñas que hacen una sola cosa, y la minimización de duplicación. También aboga por la programación en parejas y la escritura de pruebas unitarias para garantizar la calidad del código.
3. La única forma de cumplir la
entrega -la única forma de ir
rápido- es mantener el código
tan limpio como sea posible
4. • Código que se lee como si fuera una historia (como
prosa)
• Código que se nota que ha sido escrito con cariño
• Código que (SIMPLE CODE):
• PASA LOS TESTS
• NO TIENE DUPLICIDAD
• EXPRESA LAS IDEAS
• MINIMIZA EL CÓDIGO
5. El ratio de lectura respecto al de escritura es 10:1
Constantemente leyendo código como parte del
esfuerzo de escribir nuevo código
6. • Para ir rápido
• Para que el código sea rápido de escribir
• TIENE QUE SER RÁPIDO DE LEER
7. LA REGLA DEL BOY
SCOUT
Base de código que cada vez es mejor
13. Se da nombre a todo
• Variables
• Funciones
• Argumentos
• Clases
• Paquetes
• Directorios
• Ficheros
14. Un nombre tiene que tener sentido en si mismo. Por
qué existe y cómo se usa
Si un nombre necesita un comentario entonces no es lo
suficientemente revelador
15. Qué se mide y cómo se
mide
daysSinceCreation
timeSpanInSeconds
17. Series de números
Palabras que añaden ruido
ProductInfo ProductData
Redundantes(variable, table, string, boolean)
Distinguir nombres de tal manera que el lector sepa
qué los diferencia
22. CLASES => NOMBRES (NO VERBOS)
EVITAR MANAGER, PROCESSOR, DATA, INFO
MÉTODOS => VERBOS (NO VERBOS)
POSTPAYMENT, DELETEPAYMENT, SAVE
GET, SET, IS
VARIOS CONSTRUCTORES => NOMBRES
DESCRIPTIVOS
ARGUMENTOS, DOMINIO
23. UNA PALABRA POR CONCEPTO
FETCH, GET, FIND, RETRIEVE
NO USAR LA MISMA PALABRA PARA DOS
PROPÓSITOS DIFERENTES
CONSISTENCIA
ADD, INSERT
24. EL LECTOR NO TIENE QUE TRADUCIR EL
NOMBRE AL CONCEPTO QUE CONOCE
NOMBRES EN EL DOMINIO DEL PROBLEMA
O
NOMBRES EN EL DOMINIO DE LA SOLUCIÓN
25. USAR EL CONTEXTO
NO AÑADIR CONTEXTO GRATUITAMENTE
SOCIALUSER
SCREENPAINTER
-
NOMBRES CORTOS MEJOR QUE LARGOS.
NO AÑADIR MÁS CONTEXTO/INFORMACIÓN
QUE LA NECESARIA
27. PEQUEÑAS
CONTRA MÁS PEQUEÑAS MEJOR
150 LETRAS POR LÍNEA
MÁXIMO 100 LÍNEAS
RECOMENDADO MÁXIMO 20 LÍNEAS
MENOS MEJOR
28. RECOMENDADO 1 LÍNEA POR BLOQUE
LLAMADA A FUNCIÓN
NIVEL DE INDEXACIÓN COMO MUCHO 2 DENTRO
DE UNA FUNCIÓN
1 MEJOR
Bloques e indentación
29. HACER UNA SOLA COSA
HACERLA BIEN
HACER SOLO ESO
Extraer funciones hasta que el nombre de la función sea la
descripción de la implementación
30. Código que se lee como una
narrativa arriba-abajo
Cada vez que bajamos leyendo las funciones, deberíamos
descender un nivel de abstracción
Conjuntos de párrafos TO
33. ARGUMENTOS
Cuantos menos mejor
Dificulta entendimiento
MÁXIMO 3
EVITAR ARGUMENTOS DE SALIDA
(SI TIENE QUE MODIFICAR ALGO QUE SEA SU
PROPIO CONTENIDO -> CLASE O SE DEVUELVA)
38. SEPARACIÓN DE COMANDOS
Y CONSULTAS
O hace algo or responde algo
Sino, hace dos cosas
Mejor dos métodos
39. EXCEPCIONES MEJOR QUE
RESULTADOS DE ERROR
Código de error: Obliga a manejarlo inmediatamente
Excepciones permiten ser manejadas independientemente
40. EXCEPCIONES MEJOR QUE
RESULTADOS DE ERROR
Código de error: Obliga a manejarlo inmediatamente
Excepciones permiten ser manejadas independientemente
Manejo de errores en su función propia