Este es un workshop que plantea un ejercicio a modo de Kata para reflexionar acerca de:
- Ventajas y Desventajas de utilizar if/switchs
- Alternativas a estas estructuras de control
- Ventajas y desventajas (alternativas)
- Reducir el número de if/switch utilizando POO
- Áreas de aplicación
- Que significa escribir "buen código"?
Si queres realizar el workshop te proponemos que leas: La problemática (se lee rápido), Paso para realizar el workshop y Qué necesito?.
En la FIUBA planteamos un ejercicio que permitía modelar un calendario en el cuál dado una cita varias personas y recursos pueden participar de esta última. A los efectos de este workshop planteamos un subconjunto de requerimientos. Consideremos solo los siguientes casos de uso:
-
Una persona está ocupada desde (hora - fecha) hasta (hora - fecha).
-
Un recurso está ocupado desde (hora - fecha) hasta (hora - fecha).
-
El recurso no puede participar simultaneamente en dos citas.
A modo de ejemplo: Proyector puede participar del evento 'X' que se extiende desde 21/10/2016 12:00 hasta 21/10/2016 12:30 pero no en simultaneo del evento 'Y' que se extiende desde 21/10/2016 12:10 hasta 21/10/2016 13:00
-
La persona puede participar simultaneamente en dos citas.
A modo de ejemplo: Carlos puede participar del evento 'X' que se extiende desde 21/10/2016 12:00 hasta 21/10/2016 12:30 y en simultaneo el evento 'Y' que se extiende desde 21/10/2016 12:10 hasta 21/10/2016 13:00
{
"participantes": [
{
"tipo": 0,
"nombre": "Carlos",
"citas": [
{
"desde": "2016-08-09T12:00:00.349Z",
"hasta": "2016-08-09T12:30:00.349Z"
},
{
"desde": "2016-08-09T12:10:00.349Z",
"hasta": "2016-08-09T13:00:00.349Z"
}
]
},
{
"tipo": 1,
"nombre": "Proyector",
"citas": [
{
"desde": "2016-08-09T12:00:00.349Z",
"hasta": "2016-08-09T12:30:00.349Z"
},
{
"desde": "2016-08-09T12:40:00.349Z",
"hasta": "2016-08-09T13:00:00.349Z"
},
]
}
]
}
A los efectos de realizar el workshop proveemos un ambiente de pruebas ya configurado. Porqué?:
- Facilita la aplicación de la metodología TDD ( Test Driven Design).
- Permite realizar sucesivas refactorizaciones (Code Refactor).
- Disminuye la frustración del participante a la hora de configurar entorno de desarrollo.
- Permite focalizarce en el problema a resolver.
-
Clonamos el repo:
git clone https://github.com/diegosanchez/charla_banode_poo.git
-
Descargamos el branch remote correspondiente al workshop:
git checkout workshop
-
Instalamos módulos
npm install
-
Ejecutamos los tests
npm run test
o
make
Esto es lo que deberíamos ver luego de seguir todos estos pasos:
- Notebook para realizar workshop (si queres hacerlo, sino podes venir a compartir tus experiencias)
- node 4.2.3
- npm 2.14.7
- Ganas de compartir tu solución.