por qué cervantes programaba mejor que tú
TRANSCRIPT
![Page 1: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/1.jpg)
Por qué Cervantesprogramaba mejor que tú
Javier Acero @jacegu http://javieracero.com
![Page 2: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/2.jpg)
![Page 3: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/3.jpg)
1999
![Page 4: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/4.jpg)
![Page 5: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/5.jpg)
![Page 6: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/6.jpg)
Code Quality!!
![Page 7: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/7.jpg)
Code Quality!!
Business Value!!
![Page 8: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/8.jpg)
2000
![Page 9: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/9.jpg)
2001
![Page 10: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/10.jpg)
![Page 11: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/11.jpg)
![Page 12: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/12.jpg)
2011
![Page 13: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/13.jpg)
The Land That Scrum ForgotRobert C. Martin
NDC 2011
![Page 14: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/14.jpg)
![Page 15: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/15.jpg)
Por qué Cervantesprogramaba mejor que tú
Cervantesprogramaba
![Page 16: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/16.jpg)
Por qué Cervantesprogramaba mejor que tú
Cervantesprogramaba
![Page 17: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/17.jpg)
![Page 18: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/18.jpg)
@author
![Page 19: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/19.jpg)
escritura
![Page 20: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/20.jpg)
“Comunicar a alguien por escrito algo”
![Page 21: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/21.jpg)
lenguaje
![Page 22: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/22.jpg)
“Conjunto de reglas y signos que permiten la comunicación con un
ordenador”
![Page 23: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/23.jpg)
![Page 24: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/24.jpg)
0110001001100101011100110110000100100000011011010110100100100000011000100111001001101001011011000110110001100001011011100111010001100101001000000110001101110101011011000110111100100000011011010110010101110100110000111010000101101100011010010110001101101111
![Page 25: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/25.jpg)
besa mi brillante culo metálico
0110001001100101011100110110000100100000011011010110100100100000011000100111001001101001011011000110110001100001011011100111010001100101001000000110001101110101011011000110111100100000011011010110010101110100110000111010000101101100011010010110001101101111
![Page 26: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/26.jpg)
evolución de los lenguajes
![Page 27: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/27.jpg)
evolución de los lenguajes
![Page 28: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/28.jpg)
evolución de los lenguajes
potencia
![Page 29: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/29.jpg)
evolución de los lenguajes
potencia legibilidad
![Page 30: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/30.jpg)
segment .text global two_complementtwo_complement: enter 0,0 pusha mov eax, [ebp+12] neg eax mov [ebp+8], eax popa leave ret
![Page 31: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/31.jpg)
private void updateComputer(Node n, Map<String,Computer> byNameMap, Set<Computer> used) {
Computer c;c = byNameMap.get(n.getNodeName());
if (c!=null) {c.setNode(n);
} else {if(n.getNumExecutors()>0) {
computers.put(n,c=n.createComputer());if (!n.holdOffLaunchUntilSave && AUTOMATIC_SLAVE_LAUNCH) {
RetentionStrategy retentionStrategy = c.getRetentionStrategy();
if (retentionStrategy != null) {retentionStrategy.start(c);
} else {c.connect(true);
}}
}}used.add(c);
}
![Page 32: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/32.jpg)
![Page 33: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/33.jpg)
100% humanos
![Page 34: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/34.jpg)
¿realmente programamos para las
máquinas?
![Page 35: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/35.jpg)
![Page 36: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/36.jpg)
![Page 37: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/37.jpg)
W.T.F.
![Page 38: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/38.jpg)
![Page 39: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/39.jpg)
“aquel que agrada a la persona que lo lee”
![Page 40: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/40.jpg)
wehrwirtschaftsführer
![Page 41: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/41.jpg)
rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz
![Page 42: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/42.jpg)
subjetiva
![Page 43: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/43.jpg)
principios
![Page 44: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/44.jpg)
Single Responsibility Principle
Open Closed Principle
Liskov Substitution Principle
Dependency Inversion Principle
Interface Segregation Principle
Law of Demeter
Duplication
Cohesion
Information hiding
KISS
YAGNI
DRY
GRASPSimple Design
Least Surprise
Design Patterns
Uniform Access
Auto-documentation
Dependencies Simmetry
Expresiveness
Naming
![Page 45: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/45.jpg)
“aquel que cumple todos los principios”
![Page 46: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/46.jpg)
![Page 47: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/47.jpg)
![Page 48: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/48.jpg)
W.T.F.
![Page 49: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/49.jpg)
private void updateComputer(Node n, Map<String,Computer> byNameMap, Set<Computer> used) {
Computer c;c = byNameMap.get(n.getNodeName());
if (c!=null) {c.setNode(n);
} else {if(n.getNumExecutors()>0) {
computers.put(n,c=n.createComputer());if (!n.holdOffLaunchUntilSave && AUTOMATIC_SLAVE_LAUNCH) {
RetentionStrategy retentionStrategy = c.getRetentionStrategy();
if (retentionStrategy != null) {retentionStrategy.start(c);
} else {c.connect(true);
}}
}}used.add(c);
}
![Page 50: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/50.jpg)
good code
![Page 51: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/51.jpg)
You know you are working on good code when each routine you read turns out to be pretty much what you expected.
You can call it beautiful when the code also makes it look like the language was made for the problem.
![Page 52: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/52.jpg)
Good code is simple and direct. Good code reads like well-written prose.
Good code never obscures the designer’s intent but rather is full of crisp abstractions and straightforward lines of control.
![Page 53: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/53.jpg)
legibilidad
![Page 54: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/54.jpg)
*creencia personal
la mejor forma de escribir buen código es centrarse en la
legibilidad*
![Page 55: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/55.jpg)
defectos
![Page 56: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/56.jpg)
defectos
![Page 57: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/57.jpg)
1. Acoplamiento
defectos
![Page 58: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/58.jpg)
1. Acoplamiento
2. Duplicación
defectos
![Page 59: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/59.jpg)
1. Acoplamiento
2. Duplicación
3. Ausencia de encapsulación
defectos
![Page 60: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/60.jpg)
1. Acoplamiento
2. Duplicación
3. Ausencia de encapsulación
4. Complejidad innecesaria
defectos
![Page 61: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/61.jpg)
for (final ConfiguracionCanal c : mensaje.getSolicitud().getServicio().getConfiguracionesCanal()) {if (mensaje.getCanal().equals(c. getCanal())) {configuracion = c;
}}
![Page 62: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/62.jpg)
mensaje.configuracionDeCanal()
![Page 63: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/63.jpg)
MensajeSolicitud
Servicio Canal
ConfiguracionCanal
correspondiente a
de
a través de
![Page 64: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/64.jpg)
subliminal slide
getters & settersareevil
![Page 65: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/65.jpg)
las 4 cualidades del diseño simple
![Page 66: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/66.jpg)
1. Pasa todos los tests
2. Minimiza la duplicación
3. Maximiza la claridad
4. Tiene los mínimos elementos
las 4 cualidades del diseño simple
![Page 67: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/67.jpg)
oh wait...¿y los tests?
![Page 68: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/68.jpg)
![Page 69: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/69.jpg)
def d(b)eval"def #{b} end"end;d't(m,&a)puts"\e[0;3#{a.call ? "2":"1"}m#{m}\e[0m"';d'a(e)e';d'ae(e,d)e==d';d'ai(e,a)a.include? e'
![Page 70: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/70.jpg)
def d(b)eval"def #{b} end"
end
d 't(m,&a)puts"\e[0;3#{a.call ? "2":"1"}m#{m}\e[0m"'
d 'a(e)e'
d 'ae(e,d)e==d'
d 'ai(e,a)a.include? e'
![Page 71: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/71.jpg)
t '(red): testing that assert equals fails' do ae(1,2)
end
t '(green): testing that assert equals works' doae(2,2)
end
![Page 72: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/72.jpg)
twittestthe ruby test framework
that fits in a tweet!!
![Page 73: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/73.jpg)
las 4 cualidades del diseño simple
![Page 74: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/74.jpg)
1. Pasa todos los tests
las 4 cualidades del diseño simple
![Page 75: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/75.jpg)
1. Pasa todos los tests
2. Minimiza la duplicación
las 4 cualidades del diseño simple
![Page 76: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/76.jpg)
1. Pasa todos los tests
2. Minimiza la duplicación
3. Maximiza la claridad
las 4 cualidades del diseño simple
![Page 77: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/77.jpg)
1. Pasa todos los tests
2. Minimiza la duplicación
3. Maximiza la claridad
4. Tiene los mínimos elementos
las 4 cualidades del diseño simple
![Page 78: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/78.jpg)
todo repercute en la legibilidad
![Page 79: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/79.jpg)
def d(b)eval"def #{b} end"
end
d 'a(e)e'
d 'ae(e,d)e==d'
d 'ai(e,a)a.include? e'
d 't(m,&a)puts"\e[0;3#{a.call ? "2":"1"}m#{m}\e[0m"'
![Page 80: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/80.jpg)
def d(b)eval"def #{b} end"
end
d 'a(e)e'
d 'ae(e,d)e==d'
d 'ai(e,a)a.include? e'
d 't(m,&a)puts"\e[0;3#{a.call ? "2":"1"}m#{m}\e[0m"'
![Page 81: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/81.jpg)
def d(b)eval"def #{b} end"
end
d 'a(e)e'
d 'ae(e,d)e==d'
d 'ai(e,a)a.include? e'
d 't(m,&a)puts"\e[0;3#{a.call ? "2":"1"}m#{m}\e[0m"'
![Page 82: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/82.jpg)
d 'a(e)e'
d 'ae(e,d)e==d'
d 'ai(e,a)a.include? e'
![Page 83: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/83.jpg)
def assert(value) return value == trueend
def assert_equal(value, expected) return value == expectedend
def assert_includes(value, container) return container.include? valueend
![Page 84: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/84.jpg)
def d(b)eval"def #{b} end"
end
d 'a(e)e'
d 'ae(e,d)e==d'
d 'ai(e,a)a.include? e'
d 't(m,&a)puts"\e[0;3#{a.call ? "2":"1"}m#{m}\e[0m"'
![Page 85: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/85.jpg)
d 't(m,&a)puts"\e[0;3#{a.call ? "2":"1"}m#{m}\e[0m"'
![Page 86: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/86.jpg)
def test(message, &assert) puts "\e[0;3#{assert.call ? "2":"1"}m#{message}\e[0m"end
![Page 87: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/87.jpg)
¿legible?
![Page 88: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/88.jpg)
![Page 89: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/89.jpg)
legibilidad sí,pero...
¿cuánta?
![Page 90: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/90.jpg)
![Page 91: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/91.jpg)
si el test pasaimprimir en verde el nombre del test
sinoimprimir en rojo el nombre del test
![Page 92: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/92.jpg)
def test(test_name, &test) if test.passes?
print_in GREEN, test_name else print_in RED, test_name end
end
![Page 93: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/93.jpg)
el buen código es...
![Page 94: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/94.jpg)
“aquel que hace obvio lo que está pasando”
![Page 95: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/95.jpg)
Good code always looks like it was written by someone who cares.
Good code is code left by someone who cares deeply about the craft.
![Page 96: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/96.jpg)
muchas gracias
![Page 97: Por qué Cervantes programaba mejor que tú](https://reader034.vdocuments.site/reader034/viewer/2022050614/58a801e61a28abfa488b6dc3/html5/thumbnails/97.jpg)
Kent Beck: http://www.flickr.com/photos/26420411@N02/3062930943/
Opposing Armies: http://www.flickr.com/photos/ahounslea/4873239128
Ward Cunningham: http://www.flickr.com/photos/joshb/2247556208/
Uncle Bob: http://www.flickr.com/photos/koss/3250213001/
Balance: http://www.flickr.com/photos/classblog/5136926303/
Futurama pictures and WTFs/minute draws were found on google searches.
Hand drawings of Grady Booch, Ward Cunningham and Michael Feathers were taken from the Clean Code ebook.
credits