Performancing Metrics

Ejercicio de TDD – Números perfectos - \\Brain\Backup

Ejercicio de TDD – Números perfectos

La semana pasada tuvimos un mini-taller donde había que resolver el problema de los números perfectos con un enfoque TDD.

y por enfoque TDD, acordamos:

loop {

Crear prueba de cómo queremos que el código se comporte

Crear código de infraestructura para que la prueba compile pero falle

Crear código para que la prueba pase

Refactorizar

}

Por si alguien se anima a hacer el ejercicio, éstas son las historias que hubo que ir resolviendo… Vete haciendo una por una, así tendrás que ir refactorizando y el ejercicio será más útil.

h1 - Dado un número, saber si es un número perfecto o no. Es perfecto, si la suma de sus divisores ( excluido el mismo ) es igual a él mismo. Por ejemplo:

6 tiene como divisores: 1 2 3 (y 6). Si los sumamos 1 + 2 + 3 == 6. 6 Es perfecto

h2 – Dada una serie de números, identificar los perfectos { 1, 6, 78, 344 } –> { 6 }

h3 – Dado un número, además de si es perfecto, queremos saber si es abundante ( suma de divisores > num ), deficiente ( suma de divisores < num ) o primo ( divisible entre sí mismo y la unidad )

h4 – Dada una serie de números, identificar los perfectos, abundantes, deficientes y primos.

Podemos enfocar la solución de diferentes formas, agrupar los tests de diferentes maneras, nombrarlos de diferente forma, invocar a uno u otro autor a la hora de refactorizar… pero creo que no hay una verdad única. Yo os planteo una posible solución, sobre todo para que las personas que nunca han hecho nada de TDD, vean la idea.

 

Happy hacking!

~ds

 

PD –> Gracias a Hadi Hariri  ( @hhariri, blog ) por la sugerencia. En principio íbamos a hacer un ejercicio diferente, pero tras su experiencia en la devcon London, me sugirió que este podía ser interesante :)

PD2 –> Si bien los métodos en .NET son PascalCase, para los tests pongo guiones bajos porque es más cómodo de leer en la ventana de resultados

PD2 –> :O has usado youtube!!!  si, tb lo subiré a channel9 para que esté accesible desde los dos sitios. Y no.. no me estoy consumiendo entre llamas por haberlo hecho :)

Published 6/10/2010 20:05 por David Salgado
Archivado en: ,
Comparte este post:

Comentarios

# re: Ejercicio de TDD – Números perfectos

Wednesday, October 06, 2010 8:46 PM por Hadi Hariri

El mérito es de Neal Ford (@neal4d), que lo usó en su charla. Yo solo hice de eco :).  

# re: Ejercicio de TDD – Números perfectos

Wednesday, October 06, 2010 8:51 PM por David Salgado

hadi... no es por malmeter, pero porqué no te haces otro video de lo mismo con otra resolución? así se ven más opciones O=)

# re: Ejercicio de TDD – Números perfectos

Wednesday, October 06, 2010 9:00 PM por Javier Torrecilla

@David y @Hadi, muchas gracias.

La verdad es que el video está muy bien explicado y es fácil de seguir.

# re: Ejercicio de TDD – Números perfectos

Thursday, October 07, 2010 12:27 AM por Pedro

Oye David, a Euclides no lo conoces de vista verdad???

# re: Ejercicio de TDD – Números perfectos

Thursday, October 07, 2010 10:12 AM por Luis Ruiz Pavón

Yo soy de pruebas unitarias, pero no suelo hacer TDD, así que viene bien para ir poniendolo en práctica.

Muy bien explicado David ;)

Un saludo

# re: Ejercicio de TDD – Números perfectos

Thursday, October 07, 2010 10:43 AM por David Salgado

@Pedro... nop solo en foto y por la wikipedia x)

# re: Ejercicio de TDD – Números perfectos

Thursday, October 07, 2010 10:48 AM por Pedro

N = [2^(m-1)][2^m]

# re: Ejercicio de TDD – Números perfectos

Thursday, October 07, 2010 11:23 AM por David Salgado

@Pedro  Da igual, si quitas el número mismo como su posible divisor no hace falta multiplicar por dos :)  

# re: Ejercicio de TDD – Números perfectos

Monday, October 11, 2010 11:37 AM por pregunton cojonero

se puede descargar codigo ? salu2grz