Completo en http://bit.ly/Uu517
...but I think the context of the quote is being misinterpreted
somewhat. My impression from the video wasn't that Bob was
misrepresenting Cunningham's meaning, but just that he wasn't
explaining it very well.
'What killed Smalltalk is that it was just too easy to make a mess."
I think that's absolutely true, but it isn't necessarily a bad thing.
The truth is that in Smalltalk it's often easier to do anything, both
good and bad. It's rather like saying that the problem with a
motorcycle, compared to a bicycle, is that it's just too easy to go
too fast and wreck one. With programming languages, as with bikes, if
you give a powerful tool to an undisciplined, inexperienced user, they
can cause a lot of damage.
If the only vehicle you give someone is a one-gear bicycle with street
tires and training wheels, it'll be really hard for them to hurt
themselves, but they're never going to go very far or very fast,
either.
Saludos
GallegO
Lindo intercambio :-)A mi parecer, no tiene tanto que ver la escritura en sí, porque Ruby o Objective C son una copia casi del "Smalltalk lenguaje". Lo que en mi opinión sucede es un mix de cosas. La primera, es el tipado. La compilación da cierta "seguridad", pues para el que escribe existe alguien que se las sabe todas que te corrige (compilación para hacer el runtime). Esta "seguridad" no se brinda en Smalltalk, pero todos sabemos que los errores también se compilan sin problemas, el punto aquí es que es un engaño emocional que hace sentir más seguro a sus programadores.
Hola Hernan.
No veo donde lo que escribí contradiga lo que dijiste vos, pero vamos
que lo del tipado fué sólo un ejemplo para ilustrar mi punto de vista
(y tema principal del thread) que es que la misma libertad que ofrece
Smalltalk puede usarse para 'bien' y para 'mal'.
De todas formas gracias por la clase gratuita sobre el tema, me quedó
claro que leíste bastante sobre él.
Y si por el sentimiento de una persona inferís el nivel de seriedad o
correctitud de sus sistemas no estás siendo duro, estás siendo
adivino.
Para esoterismo smalltalker hay otra lista. Creo que todavía existe,
no estoy seguro que haya mucha gente :D
Gabriel,
Antes que nada aclaro que tanto el tipado como el uso de tests son
técnicas que considero útiles en su debido contexto. Incluso creo que
los smalltalkers deberían tipar un poquito mas, o un poquito antes.
De los tests me preocupan dos aspectos:
1) Un conjunto de tests es un sistema en si mismo y tiende a estar
fuertemente acoplado con el sistema que se quiere testear.
Este
acoplamiento, como casi todo acoplamiento, resulta un lastre en la
evolución del sistema. Un sistema repleto de tests requiere mas tiempo
para ser modificado.
Los amantes de TDD argumentan que dicha evolución
es "mas segura" porque está controlada por la validez de los tests, y
a mi eso me genera serias dudas.
Otro efecto similar que producen los
tests es que el desarrollador (o jefe) se contenta con ver todas las
luces verdes y puede que se relaje en actividades de factorización,
en
cambiar cosas, porque generalmente antes de fallar un tests, falla la
implementación del mismo.
2) El segundo aspecto tiene que ver con el análisis y diseño. Está
bueno ver que los programadores de Ruby, a partir de TDD, entienden
que es bueno declarar primero la intención inicial y luego teclear la
solución. En Smalltalk esto se puede hacer con tests o con un
workspace. Esto implica haber entendido que era mejor escribir el
problema y luego la solución, a que ir directamente con un diseño y
luego ver si anda. Pero pensar que uno conoce el problema de antemano
suele ser ingenuo también, por lo tanto es mas conveniente ir
modificando también la intención inicial a partir de lo que se aprende
en la interacción con el sistema. Entonces ahi me molestan los tests y
prefiero usar workspaces, de esos que uso toco y tiro todo el tiempo.
Porque no solo no está claro una solución antes de resolver un
problema, sino que suele no estar claro el problema tampoco. Smalltalk
nos da muchas herramientas para entender un problema y en ese ida y
vuelta los tests estorban mas que ayudar.
Hola Diego:
Esto derivó en algo muy copado. El tema de los tests, creo que lo
describiste perfecto, yo también siento lo mismo. El tema es que a
medida que el desarrollo va madurando empieza a cambiar menos, hasta
que se lo pone a prueba en distintas situaciones. En ese momento,
puede ser que haya pasado bastante tiempo desde que se escribió ese
código, empieza a surgir la necesidad de cambio real, dada por algo
externo. Vamos a modificar y empezamos a dejar caconas por todos
lados, sin darnos cuenta. No me quiero imaginar que pasa cuando ese
mismo código lo toca alguien que no tiene el conocimiento de haberlo
desarrollado, por más que sea una pieza única y bien pulida.
¿Como se hace para tener tantos tests?
¿Cuando desarrollas el producto si es que tenes que escribir tantos tests?
Es decir, las respuestas seguramente sean simples, pero las ecuaciones
en tiempo y dinero no.
Conociendo ti experiencia en el sistema XTrade (creo que se llama así)
>> ¿Cuando desarrollas el producto si es que tenes que escribir tantos tests?
>
> es un pregunta capciosa... lo escribis mienstras desarrollas... tambien
> podríamos decir, si hay que diseñar tanto o jugar tanto en el workspace,
> cuando desarrollas? pero la verdad es que si haces tdd bien, desarrollar
> mientras hacer funcionar los tests, directamente desde el debugger, es
> maravilloso
Uds realizaron el desarrollo de ese sistema desde la primera linea de
codigo con tests o existio un momento en el cual empezaron a
realizarlos y no pararon más?.
Me gustaria saber tambien cual es el nivel de refactoring que suelen
aplicarle a ese sistema, si es que es normal introducir cambios que
modifiquen protocolos considerablemente, jerarquias, renombramiento de
clases, en fin pequeñas o grandes bombas :)
Tienen testeada la GUI?
>> Es decir, las respuestas seguramente sean simples, pero las ecuaciones
>> en tiempo y dinero no.
>
> Eso es contextual y depende del tiempo... a mediano plazo cualquier sistema
> no testeado te va a traer más problemas que uno testeado.
Bueno, pero eso depende de cuanto cambie el sistema y como este hecho.
Yo puedo decir que si un sistema está bien hecho y basado en conceptos
simples, por mas que no tenga tests te va a traer menos problemas que
uno totalmente testeado, complicado y obeso.
Lo bueno de los tests supongo es asegurar la calidad o correctitud del sistema.
En ningún momento nos asegura no tener problemas grosos.
Bueno, igual creo que es lo que vos quisiste decir tambien.
Saludos
GallegO
Hernan:
Conociendo ti experiencia en el sistema XTrade (creo que se llama así)
Uds realizaron el desarrollo de ese sistema desde la primera linea de
>> ¿Cuando desarrollas el producto si es que tenes que escribir tantos tests?
>
> es un pregunta capciosa... lo escribis mienstras desarrollas... tambien
> podríamos decir, si hay que diseñar tanto o jugar tanto en el workspace,
> cuando desarrollas? pero la verdad es que si haces tdd bien, desarrollar
> mientras hacer funcionar los tests, directamente desde el debugger, es
> maravilloso
codigo con tests o existio un momento en el cual empezaron a
realizarlos y no pararon más?.
Me gustaria saber tambien cual es el nivel de refactoring que suelen
aplicarle a ese sistema, si es que es normal introducir cambios que
modifiquen protocolos considerablemente, jerarquias, renombramiento de
clases, en fin pequeñas o grandes bombas :)
Tienen testeada la GUI?
Bueno, pero eso depende de cuanto cambie el sistema y como este hecho.
>> Es decir, las respuestas seguramente sean simples, pero las ecuaciones
>> en tiempo y dinero no.
>
> Eso es contextual y depende del tiempo... a mediano plazo cualquier sistema
> no testeado te va a traer más problemas que uno testeado.
Yo puedo decir que si un sistema está bien hecho y basado en conceptos
simples, por mas que no tenga tests te va a traer menos problemas que
uno totalmente testeado, complicado y obeso.
Lo bueno de los tests supongo es asegurar la calidad o correctitud del sistema.
En ningún momento nos asegura no tener problemas grosos.
Bueno, igual creo que es lo que vos quisiste decir tambien.
Saludos
GallegO
Para mi un problema groso es algo que ya no se puede cambiar* y que
impacta en muchos lugares en el sistema.
Entonces, todo puede tener test y anda fenomeno, pero es una gran caca.
Claro, podes decirme que como tenes los tests, podes cambiar todo lo
que está mal, y es cierto.
A lo que apunto, y es algo que se VENDE hoy por hoy en el ambiente de
desarrollo, es que si un sistema esta totalmente testeado, es un
sistema bueno.
Como vos decís, Y HAY QUE LEER MUY BIEN, lo testeado funciona.
Eso no quiere decir que el sistema funcione, ni que el sistema sea
"bueno", si esto se puede medir de alguna forma, más que con la
opinión de los clientes.
Y creo que ese es el punto donde por ahí algunos disentimos. Aún así
todo esta relacionado en alguna u otra forma. Un sistema sin errores
va a tener clientes satisfechos siempre y cuando sea económico y en
tiempo.
Es algo pendiente para mi darle una oportunidad al TDD. Las veces que
lo intenté quizás no puse el suficiente esfurzo y como Diego sentí que
un workspace era más simple. Obviamente el debugger y todo eso se usa,
solo que no me banco hacer tests (por ahora) antes que otra cosa. Se
ve que me falta un ingrediente.
Saludos
GallegO
PD. Seguro es tarde pero estaria bueno una demo tuya en Smalltalks,
donde te proponemos un sistema en el momento y comenzas a modelarlo e
implementarlo de 0 con TDD. Nosotros miramos nomas :) y vemos como
hacés.
Hola a todos,
Hernán decía:
> no entiendo la pregunta... a ver, si queres tener software robusto tenemosSeguro, hasta acá venimos pensando igual :-)
> que testear, creo que eso no tiene sentido discutirlo.
Luego decía:
Para mí también, pero igualmente no concuerdo en que la mejor forma de testear sea haciendo TDD. Por lo menos no en mi caso y el de la otra gente que conozco.
> no entiendo la pregunta... a ver, si queres tener software robusto tenemos
> que testear, creo que eso no tiene sentido discutirlo.
> La pregunta es, cuando queremos testear y como. Al principio o al final del
> desarrollo? de manera automática o manual?
> Para mi: cuanto antes mejor y de manera automática.
IMHO TDD es muy bueno y productivo para cierto tipo de gente y para otro, muy "deprimente".
En mi caso me siento completamente atado de pies y manos y no me deja trabajar explorando el dominio como vos decís pero a mi manera. Siempre me caractericé por hacer sistemas prototipando, generando mis primeros objetitos y haciéndolos funcionar en conjunto para que estén disponibles lo antes posible para el usuario final. Y al contrario de lo que argumentan los pro TDD, querer prototipar o explorar el domino a partir de los tests me saca de foco mal. Creo que tiene mucho que ver con la forma de laburar de cada uno.
En mi caso (y el de muchos compañeros smalltalkers) priorizamos el laburo rápido, evolutivo e incremental y el refactorizar SIEMPRE que se crea necesario sin importar lo grande que sea el impacto del refactoring siempre que sea para bien. Hacer eso con [ponga aquí el numero que desee] tests de fondo que después tengo que estar manteniendo para mí es impracticable.
Repito, para mí. Seguramente en otros casos (como en el tuyo) les resulta satisfactorio.
Al contrario de lo que he oído muchas veces, opino que el test del producto final NO es responsabilidad del desarrollador (seguramente acá es donde empiezan a dudar de mi buen desempeño como desarrollador y como lider de un grupo de desarrolladores :-P).
El desarrollador debe asegurar que lo que hizo y entregó al integrador anda según lo pedido pero no debe hacer tests funcionales. Para ello hay otro rol que es el de testers, y un tester no tiene porque saber nada de Smalltalk, ni mucho menos de SUnit y TDD. Pero sí de la manera de trabajar y la sinergia del grupo de trabajo.
El grupo de desarrollo debería brindarle a los testers una herramienta que permita poder trabajar en la realización de tests automáticos desde un principio. Me refiero a que el tester/usuario pueda definir todos los casos de uso que se le ocurra mediante el uso de dicha herramienta, y que estos casos de uso puedan "correrse" en cada nuevo release interno de desarrollo o cuando se desee.
En fin, es un tema para largo pero bueno, por lo menos expuse mi opinión.
> > EsteSupongo que coincidimos que para estar bien en producción es necesario
> > acoplamiento, como casi todo acoplamiento, resulta un lastre en la
> > evolución del sistema. Un sistema repleto de tests requiere mas tiempo
> > para ser modificado.
>
> No es tan así, depende de que cambios hagas, cuanto impacte, etc.
> De última, es mejor arreglar test que arreglar errores en producción no?
lograr estabilidad. Creo que esa estabilidad se logra antes y con
menos esfuerzo si no tengo a los tests como lastre, si puedo alterar
mucho y muy seguido al sistema con un bajo costo.
Hace algunos años, con gente de esta lista :-), hicimos una clase
> No entiendo por qué la gente se preocupa tanto por tener que manterner
> tests. Si están bien hechos, no cuesta y la seguridad que te dan paga varias
> veces lo que te lleva hacerlo y mantenerlo.
FixedDecimal para instanciar números que respresenten dinero. En estos
casos creo que si es aconsejable meterle tests, como en todo caso en
donde la especificación es muy clara. Agregamos todos los que
encontramos (creo que eran los ANSI) y se nos ocurrieron, daba todo
verde y todos "demasiados" tranquilos. Hace poco encontré un error
aritmético en dicha clase que puede que haya producido diferencias
monetarias en TODOS los sistemas que hice hasta ahora. Semejante
cagadón que nos mandamos hubiese sido mas evidente sin los tests,
porque me hubiese asignado mas tiempo a revisar esa clase en lugar de
escribir tests. Porque la incertidumbre hubiese jugado a favor de
factorizar y emprolijar todo lo posible una clase tan crítica.
Lo que habría que evaluar no es cuantos problemas tiene dicho sistema,
> Mi experiencia, en un sistema donde hicimos 17000 tests, nunca tuvimos un
> problema grave de parar un release por modificar test, de última asumiamos
> el riesgo de salir con esos test fallando para ir arreglandolos de a poco
sino cuánto cambió realmente y a qué costo.
Cuando el sistema adquiere un nivel de estabilidad y las entidades mas
> > Los amantes de TDD argumentan que dicha evolución
> > es "mas segura" porque está controlada por la validez de los tests, y
> > a mi eso me genera serias dudas.
>
> por qué? de vuelta, habiendo hecho tdd seriamente, es así. A ver, de una
> manera u otra tenes que testear cualquier cambio que hagas, o lo haces con
> test automatizados, o lo haces a mano o lo hace el usuario en producción...
importantes un grado de abstracción importante, entonces los sistemas
tienden a tener dos tipos de errores: inofensivos o cuelgues totales.
Ambos tipos de errores no suelen ser nocivos en producción y en ese
punto te diría qeu si, que se haga en producción.
No es solo lo que te diga tu jefe, es un tema económico, es mas caro
> > Otro efecto similar que producen los
> > tests es que el desarrollador (o jefe) se contenta con ver todas las
> > luces verdes y puede que se relaje en actividades de factorización,
>
> entonces no estás haciendo tdd en serio... y ese gerente o jefe que no te
> deja hacer refactorizacion si tenés tests, menos te va a dejar si no tenés
> tests! va a decir "don't fix it if it aint break"! o sea, un cagón total....
> entonces esto no es un problema de tdd sino de ese tipo
factorizar con tests.
Por ejemplo si vas a implementar TCP, te bajás el rfc y
escribís ese documento en forma de tests. Pero si te ponés a escribis
tests sobre cómo manejar el buffer o cualquier otra cosas que no hace
a la especificación concreta, entonces creo que estás limitando la
capacidad de laburo que te da Smalltalk.
PD. Seguro es tarde pero estaria bueno una demo tuya en Smalltalks,
donde te proponemos un sistema en el momento y comenzas a modelarlo e
implementarlo de 0 con TDD. Nosotros miramos nomas :) y vemos como
hacés.
Yo me prendería, aunque no se si da para mezclarlo con el día del
Pharo sprint, medio que nos van a mandar a cag.ar
No se me ocurre que sería hacer algo groso.
Convengamos que seria algo sobre tdd suponiendo que ya conocemos el
uso de sunit.
Tenia ganas de contestar a este thread...
Para mi, no se pueden escribir todos los tests de antemano, porque eso
implicaria que uno conoce el problema a resolver por completo.
2009/11/13 GallegO <fxga...@gmail.com>Yo me prendería, aunque no se si da para mezclarlo con el día del
Pharo sprint, medio que nos van a mandar a cag.ar
no, vamos a otro laboratorio y listo, si se puede lo hacemos, no tengo drama.
No se me ocurre que sería hacer algo groso.
digo, no una pavada, pensar algún ejemplo interesante... yo tengo un par de ejemplos pero son chiquitos, que se yo
Siempre tuve ganas de hacer un juego con tdd pero nunca tuve tiempo. como el pacman, buscaminas, etc.
From: Hernan Wilkinson
> pero tdd es acerca de prototipar! es acerca de tener algo funcionandoYo creo que si querés tener algo rápido pero primero tenés que empezar por los tests para tenerlo entonces estamos agregando un delay muy claro para obtenerlo...
> rápido... no se cómo están haciendo tdd pero sirve justamente para lo que
> vos estás buscando...
> entiendo porqué tanto problema por el mantenimiento de los tests, no
> Si solo refactorizas, no tenes que cambiar ningun tests. Los refactorings no
> alteran la ejecuciòn del sistema.
> Si modificas el modelo, por ahí si tenes que modificar tests, dependiendo
> de
> que cambio hayas hecho, pero no es el comun de los casos... de vuelta, no
> consume
> tanto!
Claro, me refería a grandes refactorings/cambios. No sólo los que te permite hacer el RefactoringBrowser :-)
Bueno, acá es donde disiento. Creo que si uno tiene los tests funcionales correctos y cubriendo la mayor cantidad de casos de uso que se le ocurra al tester/usuario, no son necesarios los unitTests. Al fin y al cabo, si hay un DNU o lo que fuera también será visto en la corrida de los tests funcionales.
> Tdd no reemplaza los test funcionales o exploratorios o de ui, etc. que
> deben hacer los testers
> Pero tdd no es solo hacer test unitarios, todo lo contrario y eso es una
> confusión muy grande. Tdd no es bottom-up, es top-down porque justamente es
> exploratorio. Con tdd tambien haces test funcionales, de user story que
> además son los más interesantes y los que más aportan.
Por otro lado no hace falta TDD para trabajar top-down. Yo siempre trabajé top-down sin usar TDD.
Creo que la manera de modelar de un smalltalker debe ser siempre top-down, el prototiping te lleva a eso. Definir la "cáscara" de cada objeto y después meta debugger, inspectores, etc. hasta obtener el resultado esperado, pero sin tener que partir de un test, usando directamente el sistema (ya sea por workspaces o por una UI generada automáticamente para cualquier objeto nuevo que cree).
Todo depende del tamaño del buffer... hacer I/O con el teclado y el
mouse puede ser tan lento como swappear porque no te alcanza la
memoria. A mi gusto, hay que hacer I/O para leer o escribir cosas muy
pocas veces.
Andres.
No es un juego grafico, pero es un ejemplo clásico que usa la gente para
probar TDD, en el lenguaje original del ejemplo, o en otros:
http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez
-----Mensaje original-----
De: clubsm...@googlegroups.com [mailto:clubsm...@googlegroups.com]
En nombre de Andres Valloud
Enviado el: viernes, 13 de noviembre de 2009 15:57
Para: clubsm...@googlegroups.com
Asunto: [clubSmalltalk] Re: DIscusion polemica
Hola gente!
No segui todo el thread, asi que no se si habían derivado a tests en general o TDD… Pero contesto en el contexto de TDD:
Claro, “no se pueden escribir todos los tests de antemano, porque eso implicaría que uno conoce el problema a resolver por completo”.
En TDD, no se escriben todos los tests de antemano.
Se van escribiendo, de a uno. Planteando un problema a resolver, y resolviéndolo.
Puedo imaginar casos en que es parecido (y en otros, diferente), a la programación exploratoria de Hernan Wilkinson: en vez de probar con el entorno hacer algo, lo probamos por código.
No encuentro enlace, pero en el ambiente TDD se ha discutido también algunos temas de este hilo, como: separar entre programación tipo spike, exploratorio, y TDD.
Colecciono enlaces sobre TDD que me parecen interesantes en:
http://delicious.com/ajlopez/tdd
Algunos enlaces, para aportar ahora:
http://blog.orfjackal.net/2009/10/tdd-is-not-test-first-tdd-is-specify.html
http://works.bepress.com/djanzen/4/
http://www.clariusconsulting.net/blogs/kzu/archive/2009/10/04/172741.aspx del bueno de @kzu uno de los creadores de MoQ The myth that TDD or test-first slows you down is true
Otro comentario: podria asimilar un test a un comentario de Smalltalk que muestre como se usa y que se espera de un metodo
Otro comentario: es bueno encontrar tests en un proyecto. Los tests quedan practicamente como la especificacion de la funcionalidad esperada de lo que se implemento. Cuando me topo con un proyecto con tests, y un buen code coverage, cualquier actualizacion, modificacion, mejora, refactoreo, incluso portarlo a otra tecnologia, va sobre ruedas. Un proyecto sin tests, aunque sea uno nuestro, tocarlo puede ser un infierno. Michael Feathers tiene una definicion: codigo legacy no es codigo escrito en un lenguaje “obsoleto” o algo asi; no es eso, codigo legacy ES codigo SIN TESTS.
De:
clubsm...@googlegroups.com [mailto:clubsm...@googlegroups.com] En
nombre de Hernan Wilkinson
Enviado el: viernes, 13 de noviembre de 2009 15:56
Para: clubsm...@googlegroups.com
Asunto: [clubSmalltalk] Re: DIscusion polemica
2009/11/13 Andres Valloud <andres....@gmail.com>
Version: 8.5.425 / Virus Database: 270.14.63/2500 - Release Date: 11/13/09 07:54:00
Existen. Pero se los llama "piratas" y se los criminaliza.
--
Sergio.
El dom, 15-11-2009 a las 13:55 -0300, Norberto Manzanos escribió:
> Muy buena discusión.
>
Si, cierto... me parece una discusión muy interesante.
>
> Aporto algunas ideas, probablemente muy teñidas de subjetividad, pero
> que tal vez aún así sirvan para algo.
Bueno, yo también voy a tirar mis ideas... y el tema de la
"subjetividad" es justamente uno de los pilares de mis ideas con
respecto al TDD.
Creo que la programación basada en testing tiene varios puntos fuertes:
- Automatización de las tareas de testeo. Como se dijo por acá, la
computadora no se aburre con las tareas que si nos aburren a los
programadores... cuando más pueda hacer la computadora, mejor. Como un
subpunto de este punto, en los sistemas donde hay usuarios "reales",
suele ser muy productivo hacer una herramienta para que ellos mismos
sean quien escriban algunos de los casos de tests. Nadie mejor que el
usuario para saber que se espera de un sistema, y los tests modelan
justamente eso: Lo que se espera del sistema.
- Documentación viva del sistema: Los tests son documentos que (si están
bien factorizados) prueban un caso de uso del modelo y, que además, está
viva. No es como la documentación entre "", o en archivos de texto
externos (con estos nunca podemos saber si están actualizados) sino que
podemos debugearlos, y aprender del sistema desde los casos de uso. De
hecho, una de las cosas que me parece que falta en los frameworks de
unittesting es la posibilidad de generar documentación "en papel" del
sistema desde los tests. Con los tests, la documentación en papel es una
duplicación y no debería existir.
- Posibilidad de cambios grandes, tanto de diseño como de
implementación, con la seguridad que al menos no rompimos lo que ya
funciona. Esto permite demorar los cambios de diseño lo más posible...
cuando más tarde, mejor; ya que es cuando más sabremos del dominio. Con
un sistema bien testeado, se puede empezar siempre con modelos muy naive
y depurarlos según aprendamos... Cuando un sistema relativamente
complejo no tiene tests, no es fácil meterse en grandes cambios de
arquitectura.
- "Subjetividad": Norberto habló del impacto en el sujeto (el
programador), y yo quiero hablar de otro caso de subjetividad. Cuando
uno desarrolla en TDD (es decir: escribe el test ANTES de que los
objetos resuelvan el problema), uno piensa antes COMO USAR el modelo
(porque hay que probarlo desde afuera), y no como implementarlo. Aunque
la implementación de esos objetos la hagamos nosotros mismos, primero
nos ponemos en la vereda de enfrente, en la vereda de un "usuario" del
modelo. Ese pequeño cambio, en mi experiencia, siempre produce
protocolos de uso de los objetos mucho más simples y, por supuesto,
mucho más fáciles de entender e implementar. En mi experiencia, los
diseños que se obtienen con TDD son mejores (es decir: más simples).
Bueno, estos son mis 2 centavos por hoy.
Saludos,
-- Diego
Hola gente,
El dom, 15-11-2009 a las 13:55 -0300, Norberto Manzanos escribió:
> Muy buena discusión.
>
Si, cierto... me parece una discusión muy interesante.
>
> Aporto algunas ideas, probablemente muy teñidas de subjetividad, pero
> que tal vez aún así sirvan para algo.a
En resumen, cuesta convencer de introducirlo, hay más esfuerzo intelectual una vez que se introduce y es el cliente el que recibe los beneficios en vez de los programadores. ¿Porqué deberíamos hacerlo?
De hecho, tengo entendido que existía en los 60's, cayó en el olvido y volvió a resurgir a principio del 2000 gracias a XP.
De hecho, tengo entendido que existía en los 60's, cayó en el olvido y volvió a resurgir a principio del 2000 gracias a XP
En los 60's no existía ni Smalltalk ni SUnit. :)
Saludos,
Mariano.