SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Clean Code
Andrés Bedoya Tobón
@xacarana xacarana.com
Agenda Antecedentes
¿Qué es?
¿Por qué es importante?
Ingeniero X
Teoria y ejemplos
Estilos de programación
Referencias
@xacarana
Ante
+ Cualquiera puede hacer software
+ El software que funciona es la principal medida del progreso
+ Si funciona no lo toques
+ Nuestra principal prioridad es satisfacer al cliente
+ Algunas empresas exigen certificados de calidad
+ Pocos desarrolladores comprenden el 50% de las
herramientas que usan
En menos de cinco meses, dos aviones
Boeing 737 MAX 8 han protagonizado
accidentes fatales
Las autoridades investigan las
causas pero la similitud entre ambos
incidentes y las "fallas técnicas" en el
primero han situado al software de
la aeronave en el foco mediático.
737 MAX
Boeing
Fuente: BBC
Boeing 737 MAX aircraft parked in the staff car park
because there is no more capacity left at the airport
Fuente: Twitter
Error del milenio, problema informático del
año 2000, es un bug o error de software cau-
sado por la costumbre que habían adoptado
los programadores de omitir la centuria en
el año para el almacenamiento de fechas
(generalmente para economizar memoria),
asumiendo que el software solo funcionaría
durante los años cuyos nombres comenzaran
con 19. Fuente: wikipedia.
Efecto 2000Y2K
Problemas
- En Alemania, 30 millones de tarjetas bancarias dejaron de funcionar
debido a un error del software del microchip de tales tarjetas
- En Paises Bajos, había hecho un conteo final para año nuevo. Cuando ya
era medianoche la pantalla se corta y aparece la carta de ajuste del canal
con los colores torcidos.
- Japón, una alarma sonó en una planta de energía atómica dos minutos
después de la medianoche.
-En Australia, las máquinas validadoras de billetes de autobús de dos es-
tados no pudieron funcionar.
Fuente: wikipedia.
Margaret
Apollo
11
Fue una misión espacial tripulada de
Estados Unidos cuyo objetivo fue
lograr que un ser humano caminara
en la superficie de la Luna.
La misión se envió al espacio:
el 16 de julio de 1969
la ingeniera quien llevó
al Apollo 11 a la Luna
Hamilton
Margaret
Hamilton
…Luché para traer la legiti-
midad del software y así se le
dé su lugar, es por eso comen-
cé a usar el término « Ingenie-
ro de software » con el fin de
distinguirlo del hardware y
otros tipos de ingeniería.
Fuente: haciaelespacio.aem.gob.mx
¿Qué
Clean code es un conjunto de recomendaciones, que han
sido pensadas y reflexionadas de una manera intensa,
han sido aprendidas en decadas de experiencia de
ensayo y error repetitivamente. Cualquiera puede estar
en acuerdo o desacuerdo, seria una lastima que alguien
no vea, no respete este punto de vista.
Fuente: Adaptación libro Clean Code
esimportante?
Software es muy complejo para crearlo libre de bugs,
Desafortunadamente esto no nos deja libre de responsa-
bilidades. El cuerpo humano es muy complejo de enten-
der completamente, sin embargo los doctores todavía
toman un juramento de no hacer daño.
Se trata de ser un profesional que actúa con responsabi-
lidad y con una actitud proactiva.
Fuente: Adaptación Cleaner Coder
¿Por
Persona cuyo propósi-
to de vida se concreta
a través de la prácti-
ca de una actividad
laboral específica
En su mayoría, están sujetos a estrictos códigos
de conducta, rigurosa ética profesional, y obliga-
ción moral con la sociedad
IngenieroX
Recientemente se revivió una dis-
cución en Twitter, acerca del Inge-
niero 10x, desde el punto de vista
del clean code, este estereotipo de
ingeniero es un mito. Ya que el
error esta inherente en la escritu-
ra de código, programar una solu-
ción requiere pensamiento en
equipo y atención al detalle indi-
vidual y colectivo.
TeoríaEjemplos
+ La única manera de ir rápido es ir en orden
+ Fácil de leer, es más fácil de escribir
+ Regla del Boy Scout: Dejar el campamento más
limpio de lo que lo encontraste
Clean Code recopila situaciones reiterativas presentes
en la escritura de código, que permiten transformar, mal
código en buen código
TeoríaEjemplos
+ En el software se nombra todo: variables, funciones,
clases, directorios, archivos, entre otros.
+ Constantemente estamos nombrando, por tanto
deberías seguir reglas para hacerlo bien.
Nombres nemotécnico,
con intensión de revelar su significado
NombresSignificativos
El código debe ser escrito pensando en minimizar
el tiempo que le tomaría a alguien más entenderlo
Fuente: Clean Code, The art of readable code
DistincionesSignificativas
En ocasiones tenemos variables diferentes pero que
hacen lo mismo en el mismo ámbito, error común, usar
nombrado con números o errores ortográficos.
No usar la palabra variable para nombrar una varia-
ble, no usar div, para llamar un identificador.
cont, cont1, Cont, elcontador, counter
ahorrarTiempo
Usar nombres pronunciables
Usar nombres buscables y seleccionables
No usar prefijos, no abreviar, agregar contexto necesario
calivapum calcularIvaPorUsuario
m sueldo_empleado
Comentarios
+ La verdad solo esta en el código
+ El mal código genera comentarios
+ El mejor comentario es el que no se escribe
+ Usarlo para describir el return de la función
+ Los comentarios son gratis, se eliminan en el build
+ Usar comentarios TODO
Funciones
+ Reglas para crear funciones óptimas, limpias y claras:
1. Debe ser corta.
2. Debe ser aún más corta
+ Escriba funciones entre máximo 20-30 líneas, lo
ideal es una función de no más de 5 líneas.
¡Hacer una sola BIEN!
+ Llevar todo a un nivel de abstracción. Mirar si la
función se puede convertir en una o más funciones,
es decir aislar la funcionalidad.
+ El número ideal de parametros es cero (niladic)
+ Más de tres argumentos se deben justificar muy
bien, se recomienda evitar estas funciones.
+ Evitar valores bandera
Estilosde
+ Compilador
+ Motor / Intreprete
+ Code Sniffer
+ Tareas automatizadas
+ Lint tools (basic static code analyzer)
+ Bundle tools - webpack (Compactador, finalizador)
Lint
+ Escriba el código
+ Compile
+ Analice usando un linter
+ Revise los errores identificados por la herramienta
+ Realice cambio en el código para solucionar los errores
+ Enlace los módulos una vez el código este limpio
+ Analicelos con el linter
+ Realice revisión manual del código (code review)
Conclusiones
+ El compilador tiene la última palabra, es un aliado si
se usa bien. (Escoger correctamente los tipos en un
lenguaje tipado)
+ La mejor forma de lograr un código limpio, es por medio
del trabajo en equipo, un par de ojos extra es la clave
+ Mirar y corregir código, realizar mentoría beneficia
al equipo
+ Las buenas prácticas de diseño y de desarrollo de
empresas reconocidas, son de fácil acceso
Referencias
Clean Code
Robert C. Martin
The Passionate
Programmer
David HeineMeier
The Art of
Readable Code
Dustin Bosweell
Trevor Foucher
Bonus
The Clean Coder
Robert C. Martin
Clean Code
in Python
Mariano Anaya
Los Innovadores
Walter Isaacson
Gracias@xacarana
www.xacarana.com

Más contenido relacionado

Similar a Clean code

Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Leslie Diaz
 
Iniciando c
Iniciando cIniciando c
Iniciando c____
 
Tecnología es saber(1)
Tecnología es saber(1)Tecnología es saber(1)
Tecnología es saber(1)ssusercd54fc
 
Tecnologia es saber
Tecnologia es saberTecnologia es saber
Tecnologia es saberValenLpez2
 
Programac io n pdf
Programac io n pdfProgramac io n pdf
Programac io n pdfjose peralta
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxDavidGarca147527
 
Presentación trabajo programación
Presentación trabajo programaciónPresentación trabajo programación
Presentación trabajo programaciónionurrutia
 
Libro1 - PROGRAMACIÓN
Libro1 - PROGRAMACIÓNLibro1 - PROGRAMACIÓN
Libro1 - PROGRAMACIÓNgabrielalija10
 
Libro 1 - LENGUAJES DE PROGRAMACIÓN
Libro 1 - LENGUAJES DE PROGRAMACIÓNLibro 1 - LENGUAJES DE PROGRAMACIÓN
Libro 1 - LENGUAJES DE PROGRAMACIÓNGabriel Alija
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...Jordi Cabot
 
Historia de c++
Historia de c++Historia de c++
Historia de c++edwin562
 
Compiladores financieros trabajo 10
Compiladores financieros trabajo 10Compiladores financieros trabajo 10
Compiladores financieros trabajo 10anita andrea
 

Similar a Clean code (20)

Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)
 
Iniciando c
Iniciando cIniciando c
Iniciando c
 
Unidad 3 margie
Unidad 3 margieUnidad 3 margie
Unidad 3 margie
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Tecnología es saber(1)
Tecnología es saber(1)Tecnología es saber(1)
Tecnología es saber(1)
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Tecnologia es saber
Tecnologia es saberTecnologia es saber
Tecnologia es saber
 
Tecnologia es saber
Tecnologia es saberTecnologia es saber
Tecnologia es saber
 
Programac io n pdf
Programac io n pdfProgramac io n pdf
Programac io n pdf
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptx
 
Curso c++
Curso c++Curso c++
Curso c++
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
 
Presentación trabajo programación
Presentación trabajo programaciónPresentación trabajo programación
Presentación trabajo programación
 
Libro1 - PROGRAMACIÓN
Libro1 - PROGRAMACIÓNLibro1 - PROGRAMACIÓN
Libro1 - PROGRAMACIÓN
 
Libro 1 - LENGUAJES DE PROGRAMACIÓN
Libro 1 - LENGUAJES DE PROGRAMACIÓNLibro 1 - LENGUAJES DE PROGRAMACIÓN
Libro 1 - LENGUAJES DE PROGRAMACIÓN
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
 
Historia de c++
Historia de c++Historia de c++
Historia de c++
 
Compiladores financieros trabajo 10
Compiladores financieros trabajo 10Compiladores financieros trabajo 10
Compiladores financieros trabajo 10
 

Más de Andres Bedoya Tobon

Enums, constantes, listas e interfaces
Enums, constantes, listas e interfacesEnums, constantes, listas e interfaces
Enums, constantes, listas e interfacesAndres Bedoya Tobon
 
Taller estudio - Estructuras de control VBA - Excel
Taller estudio - Estructuras de control VBA - ExcelTaller estudio - Estructuras de control VBA - Excel
Taller estudio - Estructuras de control VBA - ExcelAndres Bedoya Tobon
 
Entrada y salida, manejo de cadenas de texto
Entrada y salida, manejo de cadenas de textoEntrada y salida, manejo de cadenas de texto
Entrada y salida, manejo de cadenas de textoAndres Bedoya Tobon
 
Progra-Amando Medellin Tech Fest
Progra-Amando Medellin Tech FestProgra-Amando Medellin Tech Fest
Progra-Amando Medellin Tech FestAndres Bedoya Tobon
 
03 curso poo Valores por defecto - constructores
03 curso poo Valores por defecto - constructores03 curso poo Valores por defecto - constructores
03 curso poo Valores por defecto - constructoresAndres Bedoya Tobon
 
Excel - Variables y condicionales
Excel - Variables y condicionalesExcel - Variables y condicionales
Excel - Variables y condicionalesAndres Bedoya Tobon
 
Elementos de programacion - Excel
Elementos de programacion - ExcelElementos de programacion - Excel
Elementos de programacion - ExcelAndres Bedoya Tobon
 
Programación y diseño orientado a objetos
Programación y diseño orientado a objetosProgramación y diseño orientado a objetos
Programación y diseño orientado a objetosAndres Bedoya Tobon
 
Progra-amando <3 (Amor por la programación)
Progra-amando <3 (Amor por la programación)Progra-amando <3 (Amor por la programación)
Progra-amando <3 (Amor por la programación)Andres Bedoya Tobon
 

Más de Andres Bedoya Tobon (20)

Enums, constantes, listas e interfaces
Enums, constantes, listas e interfacesEnums, constantes, listas e interfaces
Enums, constantes, listas e interfaces
 
VBA Interfaz de usuario
VBA Interfaz de usuarioVBA Interfaz de usuario
VBA Interfaz de usuario
 
VBA Interfaz de usuario
VBA Interfaz de usuarioVBA Interfaz de usuario
VBA Interfaz de usuario
 
Taller estudio - Estructuras de control VBA - Excel
Taller estudio - Estructuras de control VBA - ExcelTaller estudio - Estructuras de control VBA - Excel
Taller estudio - Estructuras de control VBA - Excel
 
Entrada y salida, manejo de cadenas de texto
Entrada y salida, manejo de cadenas de textoEntrada y salida, manejo de cadenas de texto
Entrada y salida, manejo de cadenas de texto
 
Progra-Amando Medellin Tech Fest
Progra-Amando Medellin Tech FestProgra-Amando Medellin Tech Fest
Progra-Amando Medellin Tech Fest
 
04 curso poo Herencia
04 curso poo Herencia04 curso poo Herencia
04 curso poo Herencia
 
03 curso poo Valores por defecto - constructores
03 curso poo Valores por defecto - constructores03 curso poo Valores por defecto - constructores
03 curso poo Valores por defecto - constructores
 
02 curso poo Clase - Objeto
02 curso poo Clase - Objeto02 curso poo Clase - Objeto
02 curso poo Clase - Objeto
 
01 curso poo Funciones
01 curso poo Funciones01 curso poo Funciones
01 curso poo Funciones
 
Excel - Variables y condicionales
Excel - Variables y condicionalesExcel - Variables y condicionales
Excel - Variables y condicionales
 
Excel - Macros
Excel - MacrosExcel - Macros
Excel - Macros
 
Elementos de programacion 02
Elementos de programacion 02Elementos de programacion 02
Elementos de programacion 02
 
Taller de estudio - Excel
Taller de estudio - ExcelTaller de estudio - Excel
Taller de estudio - Excel
 
Elementos de programacion - Excel
Elementos de programacion - ExcelElementos de programacion - Excel
Elementos de programacion - Excel
 
Automatizar tareas usando GAP
Automatizar tareas usando GAPAutomatizar tareas usando GAP
Automatizar tareas usando GAP
 
Pull request - Hacktoberfest
Pull request - Hacktoberfest Pull request - Hacktoberfest
Pull request - Hacktoberfest
 
Abc tipografico Medellin CSS
Abc tipografico Medellin CSSAbc tipografico Medellin CSS
Abc tipografico Medellin CSS
 
Programación y diseño orientado a objetos
Programación y diseño orientado a objetosProgramación y diseño orientado a objetos
Programación y diseño orientado a objetos
 
Progra-amando <3 (Amor por la programación)
Progra-amando <3 (Amor por la programación)Progra-amando <3 (Amor por la programación)
Progra-amando <3 (Amor por la programación)
 

Último

TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 

Último (20)

TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 

Clean code

  • 1. Clean Code Andrés Bedoya Tobón @xacarana xacarana.com
  • 2. Agenda Antecedentes ¿Qué es? ¿Por qué es importante? Ingeniero X Teoria y ejemplos Estilos de programación Referencias @xacarana
  • 3. Ante + Cualquiera puede hacer software + El software que funciona es la principal medida del progreso + Si funciona no lo toques + Nuestra principal prioridad es satisfacer al cliente + Algunas empresas exigen certificados de calidad + Pocos desarrolladores comprenden el 50% de las herramientas que usan
  • 4. En menos de cinco meses, dos aviones Boeing 737 MAX 8 han protagonizado accidentes fatales Las autoridades investigan las causas pero la similitud entre ambos incidentes y las "fallas técnicas" en el primero han situado al software de la aeronave en el foco mediático. 737 MAX Boeing Fuente: BBC
  • 5. Boeing 737 MAX aircraft parked in the staff car park because there is no more capacity left at the airport Fuente: Twitter
  • 6. Error del milenio, problema informático del año 2000, es un bug o error de software cau- sado por la costumbre que habían adoptado los programadores de omitir la centuria en el año para el almacenamiento de fechas (generalmente para economizar memoria), asumiendo que el software solo funcionaría durante los años cuyos nombres comenzaran con 19. Fuente: wikipedia. Efecto 2000Y2K
  • 7. Problemas - En Alemania, 30 millones de tarjetas bancarias dejaron de funcionar debido a un error del software del microchip de tales tarjetas - En Paises Bajos, había hecho un conteo final para año nuevo. Cuando ya era medianoche la pantalla se corta y aparece la carta de ajuste del canal con los colores torcidos. - Japón, una alarma sonó en una planta de energía atómica dos minutos después de la medianoche. -En Australia, las máquinas validadoras de billetes de autobús de dos es- tados no pudieron funcionar. Fuente: wikipedia.
  • 8. Margaret Apollo 11 Fue una misión espacial tripulada de Estados Unidos cuyo objetivo fue lograr que un ser humano caminara en la superficie de la Luna. La misión se envió al espacio: el 16 de julio de 1969 la ingeniera quien llevó al Apollo 11 a la Luna Hamilton
  • 9. Margaret Hamilton …Luché para traer la legiti- midad del software y así se le dé su lugar, es por eso comen- cé a usar el término « Ingenie- ro de software » con el fin de distinguirlo del hardware y otros tipos de ingeniería. Fuente: haciaelespacio.aem.gob.mx
  • 10. ¿Qué Clean code es un conjunto de recomendaciones, que han sido pensadas y reflexionadas de una manera intensa, han sido aprendidas en decadas de experiencia de ensayo y error repetitivamente. Cualquiera puede estar en acuerdo o desacuerdo, seria una lastima que alguien no vea, no respete este punto de vista. Fuente: Adaptación libro Clean Code
  • 11. esimportante? Software es muy complejo para crearlo libre de bugs, Desafortunadamente esto no nos deja libre de responsa- bilidades. El cuerpo humano es muy complejo de enten- der completamente, sin embargo los doctores todavía toman un juramento de no hacer daño. Se trata de ser un profesional que actúa con responsabi- lidad y con una actitud proactiva. Fuente: Adaptación Cleaner Coder ¿Por
  • 12. Persona cuyo propósi- to de vida se concreta a través de la prácti- ca de una actividad laboral específica En su mayoría, están sujetos a estrictos códigos de conducta, rigurosa ética profesional, y obliga- ción moral con la sociedad
  • 13. IngenieroX Recientemente se revivió una dis- cución en Twitter, acerca del Inge- niero 10x, desde el punto de vista del clean code, este estereotipo de ingeniero es un mito. Ya que el error esta inherente en la escritu- ra de código, programar una solu- ción requiere pensamiento en equipo y atención al detalle indi- vidual y colectivo.
  • 14. TeoríaEjemplos + La única manera de ir rápido es ir en orden + Fácil de leer, es más fácil de escribir + Regla del Boy Scout: Dejar el campamento más limpio de lo que lo encontraste Clean Code recopila situaciones reiterativas presentes en la escritura de código, que permiten transformar, mal código en buen código
  • 15. TeoríaEjemplos + En el software se nombra todo: variables, funciones, clases, directorios, archivos, entre otros. + Constantemente estamos nombrando, por tanto deberías seguir reglas para hacerlo bien. Nombres nemotécnico, con intensión de revelar su significado
  • 16. NombresSignificativos El código debe ser escrito pensando en minimizar el tiempo que le tomaría a alguien más entenderlo Fuente: Clean Code, The art of readable code
  • 17. DistincionesSignificativas En ocasiones tenemos variables diferentes pero que hacen lo mismo en el mismo ámbito, error común, usar nombrado con números o errores ortográficos. No usar la palabra variable para nombrar una varia- ble, no usar div, para llamar un identificador. cont, cont1, Cont, elcontador, counter
  • 18. ahorrarTiempo Usar nombres pronunciables Usar nombres buscables y seleccionables No usar prefijos, no abreviar, agregar contexto necesario calivapum calcularIvaPorUsuario m sueldo_empleado
  • 19. Comentarios + La verdad solo esta en el código + El mal código genera comentarios + El mejor comentario es el que no se escribe + Usarlo para describir el return de la función + Los comentarios son gratis, se eliminan en el build + Usar comentarios TODO
  • 20. Funciones + Reglas para crear funciones óptimas, limpias y claras: 1. Debe ser corta. 2. Debe ser aún más corta + Escriba funciones entre máximo 20-30 líneas, lo ideal es una función de no más de 5 líneas.
  • 21. ¡Hacer una sola BIEN! + Llevar todo a un nivel de abstracción. Mirar si la función se puede convertir en una o más funciones, es decir aislar la funcionalidad. + El número ideal de parametros es cero (niladic) + Más de tres argumentos se deben justificar muy bien, se recomienda evitar estas funciones. + Evitar valores bandera
  • 22. Estilosde + Compilador + Motor / Intreprete + Code Sniffer + Tareas automatizadas + Lint tools (basic static code analyzer) + Bundle tools - webpack (Compactador, finalizador)
  • 23. Lint + Escriba el código + Compile + Analice usando un linter + Revise los errores identificados por la herramienta + Realice cambio en el código para solucionar los errores + Enlace los módulos una vez el código este limpio + Analicelos con el linter + Realice revisión manual del código (code review)
  • 24. Conclusiones + El compilador tiene la última palabra, es un aliado si se usa bien. (Escoger correctamente los tipos en un lenguaje tipado) + La mejor forma de lograr un código limpio, es por medio del trabajo en equipo, un par de ojos extra es la clave + Mirar y corregir código, realizar mentoría beneficia al equipo + Las buenas prácticas de diseño y de desarrollo de empresas reconocidas, son de fácil acceso
  • 25. Referencias Clean Code Robert C. Martin The Passionate Programmer David HeineMeier The Art of Readable Code Dustin Bosweell Trevor Foucher
  • 26. Bonus The Clean Coder Robert C. Martin Clean Code in Python Mariano Anaya Los Innovadores Walter Isaacson