The big ball of mud | 4Sessions Feb17

Post on 12-Apr-2017

169 views 1 download

Transcript of The big ball of mud | 4Sessions Feb17

Nacho Fanjul

#4sessions25 - Febrero

The big ball of mud!

Lenguaje

introducción

Es un sistema de comunicación estructurado para el que existe un Contexto de uso y ciertos principios combinatorios formales.

Tal día como hoy…

introducción

introducción

… 6 meses después...

Nacho FanjulKey Developer

@nfanjulnfanjul@pasiona.com@

Agenda08:30 am

09:00 – 12:00 am 12:00 – 02:00 PM 02:00 – 03:00 Pm 03:30 Pm 04:00 pm 04:30 – 06:00 pm 06:00 pm Conclusiones

– Cup of coffee time!– Architecture– Code– lunch time!– Testing– Javascript– API– The end!

Cup of coffee time!

08:30 AM

Cup of coffee time!

08:30 AM

Cup of coffee time!

08:30 AM

09:00 AM

Architecture

Capa presentación WEB API APP

09:00 AM

Architecture

Capa presentación WEB API APP

Application Service Logic Entitie

s

09:00 AM

Architecture

Capa presentación WEB API APP

Application

Infrastructure BD Agents Files

Service Logic Entitie

s

09:00 AM

Architecture

Capa presentación WEB API APP

Application

Infrastructure BD Agents Files

Service Logic Entitie

s

Crosscutting

Const Enum

09:30 AM

Show me the architecture

09:30 AM

Show me the architecture

09:30 AM

Show me the architecture

09:30 AM

Show me the architecture

09:30 AM

Show me the architecture

10:00 AM

Patterns

• Soluciones a problemas ya típicos y recurrentes• Vocabulario común• Estandarizar• Facilitar el aprendizaje y desarrollo• Evitar reiteración

10:00 AM

Patterns

MVC

Decorator

Factory

Facade

Unit Of Work Repository

10:30 AM

Polymorphism

Una misma operación, distintos tipos de objetos

10:30 AM

Polymorphism

Una misma operación, distintos tipos de objetos

10:30 AM

Polymorphism

Una misma operación, distintos tipos de objetos

10:30 AM

Polymorphism

Una misma operación, distintos tipos de objetos

10:30 AM

Polymorphism

Una misma operación, distintos tipos de objetos

11:00 AM

Almuerzo time!

11:00 AM

Almuerzo time!

11:30 AM

Abstraction

Separar el comportamiento especifico de un objeto, método o clase.

• Clases base (Herencia)• Métodos • Evitar acoplamientos• …

11:30 AM

Abstraction

Separar el comportamiento especifico de un objeto, método o clase.

• Clases base (Herencia)• Métodos • Evitar acoplamientos• …

12:00 PM

In my code (I)

• Scrolling• Naming• Use objects• Comments

12:00 PM

In my code (I)

• Scrolling• Naming• Use objects• Comments

12:00 PM

In my code (I)

• Scrolling• Naming• Use objects• Comments

12:00 PM

In my code (I)

• Scrolling• Naming• Use objects• Comments

12:00 PM

In my code (I)

• Scrolling• Naming• Use objects• Comments

12:00 PM

In my code (I)

• Scrolling• Naming• Use objects• Comments

12:30 PM

In my code (II)

• If Else…• Constants• Configurable• Logs

12:30 PM

In my code (II)

• If Else…• Constants• Configurable• Logs

12:30 PM

In my code (II)

• If Else…• Constants• Configurable• Logs

12:30 PM

In my code (II)

• If Else…• Constants• Configurable• Logs

12:30 PM

In my code (II)

• If Else…• Constants• Configurable• Logs

01:00 PM

Extensions

Extendamos nuestros objetos y dotémoslos de funcionalidad.

• ToString();• ToList();• Toxxxxx();• …

01:00 PM

Extensions

Extendamos nuestros objetos y dotémoslos de funcionalidad.

• ToString();• ToList();• Toxxxxx();• …

01:00 PM

Extensions

Extendamos nuestros objetos y dotémoslos de funcionalidad.

• ToString();• ToList();• Toxxxxx();• …

01:00 PM

Extensions

Extendamos nuestros objetos y dotémoslos de funcionalidad.

• ToString();• ToList();• Toxxxxx();• …

01:30 PM

Generics

Clases base con parámetros genéricospara su reutilización.

Lunch Time!

02:00-03:00 PM

03:30 PM

Testing

Un minuto “perdido” haciendo un test, son horas GANADAS en resolución de bugs!

03:30 PM

Testing

Un minuto “perdido” haciendo un test, son horas GANADAS en resolución de bugs!

• Nombres descriptivos• 1 test => 1 funcionalidad• Simple

• UnitTest != IntegracionTest• Uso de Mocks

Javascript

04:00 PM

• Modular• Estructurado• Herencia• Métodos públicos• Métodos privados

Llego donde pocos lenguajes llegan y

dentro del “caos”, yo soy el REY.

Javascript

04:00 PM

• Modular• Estructurado• Herencia• Métodos públicos• Métodos privados

Llego donde pocos lenguajes llegan y

dentro del “caos”, yo soy el REY.

Javascript

04:00 PM

• Modular• Estructurado• Herencia• Métodos públicos• Métodos privados

Llego donde pocos lenguajes llegan y

dentro del “caos”, yo soy el REY.

Javascript

04:00 PM

• Modular• Estructurado• Herencia• Métodos públicos• Métodos privados

Llego donde pocos lenguajes llegan y

dentro del “caos”, yo soy el REY.

Javascript

04:00 PM

• Modular• Estructurado• Herencia• Métodos públicos• Métodos privados

Llego donde pocos lenguajes llegan y

dentro del “caos”, yo soy el REY.

Javascript

04:00 PM

• Modular• Estructurado• Herencia• Métodos públicos• Métodos privados

Llego donde pocos lenguajes llegan y

dentro del “caos”, yo soy el REY.

API

04:30 PM

Llámame, y yo te respondo!

Implement API

05:00 PM

• Simple• Verbos• Retornos adecuados

Respetando voy, respetando vengo…

Implement API

05:00 PM

• Simple• Verbos• Retornos adecuados

Respetando voy, respetando vengo…

Implement API

05:00 PM

• Simple• Verbos• Retornos

adecuados

Respetando voy, respetando vengo…

Diogenes syndrome

05:30 PM

Diogenes syndrome

05:30 PM

The end!!

06:00 PM

"Programa como si supieses que quien va a mantener tu código, es un psicópata con

tendencias violentas que sabe donde vives"

conclusiones

"Programa como si supieses que quien va a mantener tu código, es un psicópata con

tendencias violentas que sabe donde vives"

conclusiones

Q&ANacho Fanjul @nfanjul

nfanjul@pasiona.com@