<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentarios en: RE: Writing good code requires you to perform experiments</title>
	<atom:link href="http://blog.cuerty.com/2009/08/17/re-writing-good-code-requires-you-to-perform-experiments/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cuerty.com/2009/08/17/re-writing-good-code-requires-you-to-perform-experiments/</link>
	<description>Historias, pensamientos, ideas y proyectos de un programador viviendo en Buenos Aires, Argentina.</description>
	<lastBuildDate>Mon, 16 Aug 2010 11:14:47 -0300</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: qwerty</title>
		<link>http://blog.cuerty.com/2009/08/17/re-writing-good-code-requires-you-to-perform-experiments/#comment-457</link>
		<dc:creator>qwerty</dc:creator>
		<pubDate>Tue, 18 Aug 2009 16:40:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.cuerty.com/?p=85#comment-457</guid>
		<description>@Santiago:

Una funcion puede asumir ciertas cosas sobre lo que va a recibir.

Existe lo que se conoce como &lt;a href=&quot;http://www.cc2e.com/Page.aspx?hid=144&quot; rel=&quot;nofollow&quot;&gt;defensive programming&lt;/a&gt; que es basicamente tener una capa que valide los parametros de entrada antes de pasarselo a las funciones que &quot;hagan algo&quot;. Un ejemplo de esto es el &lt;a href=&quot;http://csis.pace.edu/~bergin/mvc/mvcgui.html&quot; rel=&quot;nofollow&quot;&gt;pattern MVC&lt;/a&gt; donde el view valida los datos de entrada, y seria poco optimo y hasta confuso el volver a hacer las validaciones en el modelo.

Si vos tenes las &quot;barricadas&quot; para validar los datos que entran de los usuarios, las funciones que los reciben y procesan son mas bobas: menos logica es igual a menos lineas de codigo y existe cierta correlacion con menos bugs. El resultado final es un software mucho mas mantenible.

Ahora, segun esto tenes dos tipos de codigo: El que valida los datos de entrada y el que hace algo con eso datos: ¡Ambos pueden ser testeados!

Los que validan datos pueden ser encapsulados en funciones a las que dentro de un test case probas con datos tanto validos como invalidos y ves su resultado. Las que hacen algo con esos datos tambien las podes encapsular y meter los datos y observar el resultado controlando que sea el esperado.

TDD es lejos la mejor metodologia/filosofia para poder confiar en tu codigo, aun cuando dejaste de mantenerlo.</description>
		<content:encoded><![CDATA[<p>@Santiago:</p>
<p>Una funcion puede asumir ciertas cosas sobre lo que va a recibir.</p>
<p>Existe lo que se conoce como <a href="http://www.cc2e.com/Page.aspx?hid=144" rel="nofollow">defensive programming</a> que es basicamente tener una capa que valide los parametros de entrada antes de pasarselo a las funciones que &#8220;hagan algo&#8221;. Un ejemplo de esto es el <a href="http://csis.pace.edu/~bergin/mvc/mvcgui.html" rel="nofollow">pattern MVC</a> donde el view valida los datos de entrada, y seria poco optimo y hasta confuso el volver a hacer las validaciones en el modelo.</p>
<p>Si vos tenes las &#8220;barricadas&#8221; para validar los datos que entran de los usuarios, las funciones que los reciben y procesan son mas bobas: menos logica es igual a menos lineas de codigo y existe cierta correlacion con menos bugs. El resultado final es un software mucho mas mantenible.</p>
<p>Ahora, segun esto tenes dos tipos de codigo: El que valida los datos de entrada y el que hace algo con eso datos: ¡Ambos pueden ser testeados!</p>
<p>Los que validan datos pueden ser encapsulados en funciones a las que dentro de un test case probas con datos tanto validos como invalidos y ves su resultado. Las que hacen algo con esos datos tambien las podes encapsular y meter los datos y observar el resultado controlando que sea el esperado.</p>
<p>TDD es lejos la mejor metodologia/filosofia para poder confiar en tu codigo, aun cuando dejaste de mantenerlo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Santiago</title>
		<link>http://blog.cuerty.com/2009/08/17/re-writing-good-code-requires-you-to-perform-experiments/#comment-456</link>
		<dc:creator>Santiago</dc:creator>
		<pubDate>Tue, 18 Aug 2009 15:34:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.cuerty.com/?p=85#comment-456</guid>
		<description>Yo entiendo que probar una función experimental con todo el programa entero es engorroso y hasta estúpido, y siempre es más eficiente hacer los test cases de la forma más minimalista posible.

Pero también hay que recalcar que a veces el input de una función X no es lo que debería, y es algo que solamente &lt;i&gt;&quot;podría&quot;&lt;/i&gt; ser probado con seguridad en todo su integridad.

Igualmente este paso se podría obviar si por ejemplo se probara la otra parte (el output que va a recibir la función), separadamente.</description>
		<content:encoded><![CDATA[<p>Yo entiendo que probar una función experimental con todo el programa entero es engorroso y hasta estúpido, y siempre es más eficiente hacer los test cases de la forma más minimalista posible.</p>
<p>Pero también hay que recalcar que a veces el input de una función X no es lo que debería, y es algo que solamente <i>&#8220;podría&#8221;</i> ser probado con seguridad en todo su integridad.</p>
<p>Igualmente este paso se podría obviar si por ejemplo se probara la otra parte (el output que va a recibir la función), separadamente.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
