SlideShare una empresa de Scribd logo
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br/es

Clean Code con

Técnicas de Refactorización y TDD
Acerca de la iniciativa...
Estatísticas del entrenamiento de Clean Code
hasta la fecha:

Primer grupo en: 05/2012
Clases ya realizadas: 21
Desarrolladores entrenados: 340
AgileCode
“Transformar la manera en que los equipos de
desarrollo de software trabajan, aumentando su
nivel de madurez técnica y gerencial”
http://www.agilecode.com.br/es
Rodrigo Branas
rodrigo.branas@agilecode.com.br
http://www.agilecode.com.br
•
•
•
•

Desarrollo de Software en Gennera
Entrenamientos en Agile Code
Artículos en Java Magazine
Conferencias sobre desarrollo de software
en eventos, universidades y empresas
Formación Académica

Ciencias de la Computación - UFSC
Gestión de Proyectos - FGV
Certificaciones

SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM
Experiencia

Desde hace más de 12 años desarrollando
software en la plataforma Java en las empresas:
EDS, HP, NET, Citibank, GM, Dígitro, Softplan,
OnCast, Senai, VALE, RBS, Unimed, Globalcode,
V.Office, Suntech, WPlex e Gennera.
El contenido deste entrenamiento
puede afectar su zona de confort
¿Sobre que vamos hablar?
Insatisfación con el fracaso!
¿Existe diferencia?
Insatisfación con el trabajo
¿Te sientes profesional?
¿Te sientes profesional?
¿Te sientes profesional?
¿Podría ser más productivo?
¿Cuanto tiempo perdemos
intentando entender el código
para arreglar un defecto?
¿Te sientes haciendo un
trabajo brazal y fatigoso?
¿Ya quisiste dejarlo todo?
¿Que motiva a un desarrollador?
“Quien trabaja solamente por el
diñero, ganhe lo que for, siempre
será mal pago.”
“Cual es tu obra?”
(Mario Cortella)
¿Cuanto custa toda esta
confusión para la empresa?
Alta rotatividad
Demora excesiva para poner
nuevos productos en marcha
¿Cuantos proyectos ya fueran
desechados?
Muchos defectos
¿Cuanto custa la perdida de
confianza de sus clientes?
Passamos la major parte del
tiempo leyendo el código!
¿Dos desarrolladores son más
productivos que uno?
(Pair Programming)
¿Que es Clean Code?
Echo con cuidado
Inteligente
Reusable
Revela sus intenciones
Sencillo
Fácil de entender
“Cualquier tonto consigue escribir un
código que el ordenador entienda.
Buenos programadores escriben código
que otros humanos comprendan.”
(Martin Fowler)
Funcionar es lo mínimo
Calidad Externa x Interna
¿Como medir la calidad del
código?
¿Líneas de código?
¿Número de métodos?
¿Número de classes?

¿Tamanho de los método?
¿Complejidad?

???
WTF?
WTF?

WTF?
WTF?

WTF?

WTF?

WTF?
Dificuldad para entenderse
Decirlo es fácil!
Empezando a entrenar
Nomes estraños
Limitación histórica
1.
2.
3.
4.
5.
6.
7.
8.
9.

READ INPUT TAPE A1, B1, C1;
501 FORMAT A1;
IF (A1) 777, 777, 777
IF (B1) 888, 888, 888
IF (C1) 999, 999, 999
STOP 1
799 S = FLOATF(A1 + B1 + C1) / 2.0
WRITE TO TAPE S
END PROCESS

Las linguajes no ayudavam
Los entornos de desarrollo no
ayudavam
Los ordenadores no ayudavam
Herencia Maldita
Aprendiendo con los mestres
1.
2.
3.
4.
5.
6.
7.
8.

// Descripción de la maquina
String mDesc;
// Suma de las parcelas
int s1;
// Color de los ojos
String cOjos;
// Cotización del Dólar
int aux;
Revelando su intención
1.
2.
3.
4.
5.
6.
7.
8.

// Descripción de la maquina
String mDesc;
// Suma de las parcelas
int s1;
// Color de los ojos
String cOjos;
// Cotazición del Dólar
int aux;
1.
2.
3.
4.
5.
6.
7.
8.

// Descripción de la maquina
String;
// Suma de las parcelas
int;
// Color de los ojos
String;
// Cotización del Dólar
int;
1.
2.
3.
4.
5.
6.
7.
8.

// Descripción de la maquina
String descriptionDeLaMaquina;
// Suma de las parcelas
int sumaDeLasParcelas;
// Color de los ojos
String colorDeLosOjos;
// Cotización del Dólar
int cotizacionDelDolar;
1.
2.
3.
4.
5.
6.
7.
8.

String descriptionDeLaMaquina;
int sumaDeLasParcelas;
String colorDeLosOjos;
int cotizacionDelDolar;
1.
2.
3.
4.

String descriptionDeLaMaquina;
int sumaDeLasParcelas;
String colorDeLosOjos;
int cotizacionDelDolar;
No seas tan genérico
1.
2.
3.
4.
5.
6.

// Ejecutar el cálculo de la nómina
void ejecutar();
// Calcular el impuesto
void calcular();
// Renderizar la imagen
void renderizar();

7.

// Totalizar los costos de las llamadas

8. void totalizar();
1.
2.
3.
4.
5.
6.

// Ejecutar el cálculo de la nómina
void ejecutarCalculoDeLaNomina();
// Calcular el impuesto
void calcularImpuesto();
// Renderizar la imagen
void renderizarImagen();

7.

// Totalizar los costos de las llamadas

8. void totalizarCostosDeLasLlamadas()
1.
2. void ejecutarCalculoDeLaNomina();
3.
4. void calcularImpuesto();
5.
6. void renderizarImagen();
7.

8. void totalizarCostosDeLasLlamadas()
1. void ejecutarCalculoDeLaNomina();
2. void calcularImpuesto();
3. void renderizarImagen();
4. void totalizarCostosDeLasLlamadas()
Simplificando estructuras de
decisión
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

class Taximetro {
...
double calcularCostoDelViaje() {
if (hora > 22:00 || hora < 06:00) {
return distancia * 3.90;
} else {
return distancia * 2.10;
}
}
...
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

class Taximetro {
...
double calcularCostoDelViaje() {
if () {
return distancia * 3.90;
} else {
return distancia * 2.10;
}
}
...
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

class Taximetro {
...
double calcularCostoDelViaje() {
if (esBandeiraDos()) {
return distancia * 3.90;
} else {
return distancia * 2.10;
}
}
...
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

...
double calcularCostoDelViaje() {
if (esBandeiraDos()) {
return distancia * 3.90;
} else {
return distancia * 2.10;
}
Boolean esBandeiraDos() {
return hora > 22:00 || hora < 06:00;
}
...
¿Cuales son las ventajas de
la modificación?
¿Cómo sería una prueba automatizada
antes de la refactorización?
1.
2.
3.
4.
5.
6.
7.

public class TaximetroPrueba {
public void debeSerBanderaDos() {
}
}
1.
2.
3.
4.
5.
6.
7.
8.

public class TaximetroPrueba {
public void debeSerBanderaDos() {
Taximetro taximetro = new Taximetro();

}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.

public class TaximetroPrueba {
public void debeSerBanderaDos() {
Taximetro taximetro = new Taximetro();

taximetro.iniciar(23horas());

}

}
1. public class TaximetroPrueba {
2.
3.
public void debeSerBanderaDos() {
4.
Taximetro taximetro = new Taximetro();
5.
taximetro.iniciar(23horas());
6.
taximetro.distanciaRecorridaEnKM(3.45);
7.
}
8.
9. }
10.
1. public class TaximetroPrueba {
2.
3.
public void debeSerBanderaDos() {
4.
Taximetro taximetro = new Taximetro();
5.
taximetro.iniciar(23horas());
6.
taximetro.distanciaRecorridaEnKM(3.45);
7.
double costo = taximetro.calcularCostoDelViaje();
8.
}
9.
10. }
11.
1. public class TaximetroPrueba {
2.
3.
public void debeSerBanderaDos() {
4.
Taximetro taximetro = new Taximetro();
5.
taximetro.iniciar(23horas());
6.
taximetro.distanciaRecorridaEnKM(3.45);
7.
double costo = taximetro.calcularCostoDelViaje();
8.
assertEquals(23.45, costo);
9.
}
10.
11. }
12.
¿Y depués?
1.
2.
3.
4.
5.
6.
7.

public class TaximetroPrueba {
public void debeSerBanderaDos() {
}
}
1.
2.
3.
4.
5.
6.
7.
8.

public class TaximetroPrueba {
public void debeSerBanderaDos() {
Taximetro taximetro = new Taximetro();

}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.

public class TaximetroPrueba {
public void debeSerBanderaDos() {
Taximetro taximetro = new Taximetro();

taximetro.iniciar(23horas());

}

}
1. public class TaximetroPrueba {
2.
3.
public void debeSerBanderaDos() {
4.
Taximetro taximetro = new Taximetro();
5.
taximetro.iniciar(23horas());
6.
assertTrue(taximetro.esBandeiraDos());
7. }
8.
9. }
10.
Magic numbers
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

...
double calcularCostoDelViaje() {
if (esBandeiraDos()) {
return distancia * 3.90;
} else {
return distancia * 2.10;
}
Boolean esBandeiraDos() {
return hora > 22:00 || hora < 06:00;
}
...
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

...
double calcularCostoDelViaje() {
if (esBandeiraDos()) {
return distancia * ;
} else {
return distancia * ;
}
Boolean esBandeiraDos() {
return hora > 22:00 || hora < 06:00;
}
...
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

...
double calcularCostoDelViaje() {
if (esBandeiraDos()) {
return distancia * COSTO_BANDERA_2;
} else {
return distancia * COSTO_BANDERA_1;
}
Boolean esBandeiraDos() {
return hora > 22:00 || hora < 06:00;
}
...
Saindo do labirinto
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
} else {
5.
return distancia * COSTO_BANDERA_1;
6.
}
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
} else {
5.
if (esDomingo()) {
6.
return distancia * COSTO_DOMINGO;
7.
} else {
8.
return distancia * COSTO_BANDERA_1;
9.
}
10. }
Distancia del borde
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
} else {
5.
if (esDomingo()) {
6.
return distancia * COSTO_DOMINGO;
7.
} else {
8.
return distancia * COSTO_BANDERA_1;
9.
}
10. }
11. }
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
}
5.
if (esDomingo()) {
6.
return distancia * COSTO_DOMINGO;
7.
} else {
8.
return distancia * COSTO_BANDERA_1;
9.
}
10.
11. }
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
}
5.
if (esDomingo()) {
6.
return distancia * COSTO_DOMINGO;
7.
} else {
8.
return distancia * COSTO_BANDERA_1;
9.
}
10.
11. }
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
}
5.
if (esDomingo()) {
6.
return distancia * COSTO_DOMINGO;
7.
} else {
8.
return distancia * COSTO_BANDERA_1;
9.
}
10. }
11.
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
}
5.
if (esDomingo()) {
6.
return distancia * COSTO_DOMINGO;
7.
}
8.
return distancia * COSTO_BANDERA_1;
9.
10. }
11.
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
}
5.
if (esDomingo()) {
6.
return distancia * COSTO_DOMINGO;
7.
}
8.
return distancia * COSTO_BANDERA_1;
9. }
10.
11.
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return distancia * COSTO_BANDERA_2;
4.
}
5.
if (esDomingo()) {
6.
return distancia * COSTO_DOMINGO;
7.
}
8.
return distancia * COSTO_BANDERA_1;
9. }
10.
11.
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return;
4.
}
5.
if (esDomingo()) {
6.
return;
7.
}
8.
return;
9. }
10.
11.
1. double calcularCostoDelViaje() {
2.
if (esBandeiraDos()) {
3.
return calcularBanderaDos(distancia);
4.
}
5.
if (esDomingo()) {
6.
return calcularDomingo(distancia);
7.
}
8.
return calcularBanderaUno(distancia);
9. }
10.
11.
1. double calcularCostoDelViaje() {
2.
3.
4.

5. }

if (esBandeiraDos()) return calcularBanderaDos(distancia);
if (esDomingo()) return calcularDomingo(distancia);
return calcularBanderaUno(distancia);
1. double calcularCostoDelViaje() {
2.
3.
4.
5.

6. }

if (esBandeiraDos()) return calcularBanderaDos(distancia);
if (esDomingo()) return calcularDomingo(distancia);
return calcularBanderaUno(distancia);
1. double calcularCostoDelViaje() {
2.
3.
4.
5.

6. }

if (esBandeiraDos()) return calcularBanderaDos(distancia);
if (esBandeiraTres()) return calcularBanderaTres(distancia);
if (esDomingo()) return calcularDomingo(distancia);
return calcularBanderaUno(distancia);
¿Miedo de estropear algo?
Test-Driven Development
Ahorre tiempo y diñero, pruebe
más temprano!
Herramientas – Hudson + Sonar
Clean Code (EN ESPANOL)

Más contenido relacionado

Similar a Clean Code (EN ESPANOL)

Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
jorgelebrato
 
Por qué Cervantes programaba mejor que tú
Por qué Cervantes programaba mejor que túPor qué Cervantes programaba mejor que tú
Por qué Cervantes programaba mejor que tú
Javier Acero
 
Porqué Cervantes programaba mejor que tú
Porqué Cervantes programaba mejor que túPorqué Cervantes programaba mejor que tú
Porqué Cervantes programaba mejor que tú
Agile Spain
 
Exposicion
ExposicionExposicion
Realidad Aumentada más allá de Glass - Droidcon 2014
Realidad Aumentada más allá de Glass - Droidcon 2014Realidad Aumentada más allá de Glass - Droidcon 2014
Realidad Aumentada más allá de Glass - Droidcon 2014
Fernando Gallego
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
Fernando Escolar Martínez-Berganza
 
Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Mery_Angie_Ugalde
 
Reglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows VistaReglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows Vista
juliocasal
 
La magia de Flutter
La magia de FlutterLa magia de Flutter
La magia de Flutter
Mauricio Angulo Sillas
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0javiel162009
 
Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)javiel162009
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsFátima Casaú Pérez
 
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Paradigma Digital
 
HackDay Java 9 Spanish version
HackDay Java 9 Spanish versionHackDay Java 9 Spanish version
HackDay Java 9 Spanish version
HillmerC
 
Reactvolution
ReactvolutionReactvolution
Reactvolution
_Lagash
 
Keypad 4 x4
Keypad 4 x4Keypad 4 x4
Programacion de arduino(JHANCARLOS RAMOS COTRINA)
Programacion de arduino(JHANCARLOS RAMOS COTRINA)Programacion de arduino(JHANCARLOS RAMOS COTRINA)
Programacion de arduino(JHANCARLOS RAMOS COTRINA)
jhancarlos ramos cotrina
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreLuis Zurita
 

Similar a Clean Code (EN ESPANOL) (20)

Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
 
Por qué Cervantes programaba mejor que tú
Por qué Cervantes programaba mejor que túPor qué Cervantes programaba mejor que tú
Por qué Cervantes programaba mejor que tú
 
Porqué Cervantes programaba mejor que tú
Porqué Cervantes programaba mejor que túPorqué Cervantes programaba mejor que tú
Porqué Cervantes programaba mejor que tú
 
Exposicion
ExposicionExposicion
Exposicion
 
Realidad Aumentada más allá de Glass - Droidcon 2014
Realidad Aumentada más allá de Glass - Droidcon 2014Realidad Aumentada más allá de Glass - Droidcon 2014
Realidad Aumentada más allá de Glass - Droidcon 2014
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
 
Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez
 
Reglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows VistaReglas de Oro para el Desarrollo con Windows Vista
Reglas de Oro para el Desarrollo con Windows Vista
 
La magia de Flutter
La magia de FlutterLa magia de Flutter
La magia de Flutter
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0
 
Prueba
PruebaPrueba
Prueba
 
Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
 
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
 
HackDay Java 9 Spanish version
HackDay Java 9 Spanish versionHackDay Java 9 Spanish version
HackDay Java 9 Spanish version
 
Reactvolution
ReactvolutionReactvolution
Reactvolution
 
Csharp
CsharpCsharp
Csharp
 
Keypad 4 x4
Keypad 4 x4Keypad 4 x4
Keypad 4 x4
 
Programacion de arduino(JHANCARLOS RAMOS COTRINA)
Programacion de arduino(JHANCARLOS RAMOS COTRINA)Programacion de arduino(JHANCARLOS RAMOS COTRINA)
Programacion de arduino(JHANCARLOS RAMOS COTRINA)
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 

Más de Rodrigo Branas

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
Rodrigo Branas
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Rodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
Rodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
Rodrigo Branas
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
Rodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
Rodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
Rodrigo Branas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
Rodrigo Branas
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
Rodrigo Branas
 
#4 - Git - Stash
#4 - Git - Stash#4 - Git - Stash
#4 - Git - Stash
Rodrigo Branas
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
Rodrigo Branas
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
Rodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
Rodrigo Branas
 
JavaScript - Date
JavaScript - DateJavaScript - Date
JavaScript - Date
Rodrigo Branas
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
Rodrigo Branas
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJS
Rodrigo Branas
 
Scope AngularJS
Scope AngularJSScope AngularJS
Scope AngularJS
Rodrigo Branas
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
Rodrigo Branas
 

Más de Rodrigo Branas (20)

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo BranasNode.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo BranasNode.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo BranasNode.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
 
#4 - Git - Stash
#4 - Git - Stash#4 - Git - Stash
#4 - Git - Stash
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
 
#2 - Git - DAG
#2 - Git - DAG#2 - Git - DAG
#2 - Git - DAG
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
JavaScript - Date
JavaScript - DateJavaScript - Date
JavaScript - Date
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJS
 
Scope AngularJS
Scope AngularJSScope AngularJS
Scope AngularJS
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJSHTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
 

Último

Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Festibity
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
juanchogame18
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
tamarita881
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
AMADO SALVADOR
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
SofiaCollazos
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
aljitagallego
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.pptTEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
SandroNava1
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
SERVANDOBADILLOPOLEN
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
julio05042006
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
IsabelQuintero36
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 
algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1
yuki22434
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
durangense277
 

Último (20)

Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.pptTEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 
algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
 

Clean Code (EN ESPANOL)

Notas del editor

  1. Hola! Muybuenastardes.Bienvenidos al entrenamento de Clean Code. Es um gran placer estaraquí en vuestra casa, en Peru. En los próximos dos díasvamosestar a juntoshablando de calidad de código, técnicas de refactorización, orientación a objectos, pruebasautomatizadas entre otrascosas