<?xml version="1.0" encoding="ISO-8859-1"?><!-- generator="wordpress/2.3-alpha" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Incondicionalmente</title>
	<link>http://www.estadobeta.com/2008/03/18/incondicionalmente/</link>
	<description>desarrollo web con estándares</description>
	<pubDate>Sun, 27 Jul 2008 00:38:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3-alpha</generator>

	<item>
		<title>By: Fabian Ramírez</title>
		<link>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-32847</link>
		<author>Fabian Ramírez</author>
		<pubDate>Thu, 17 Apr 2008 21:58:33 +0000</pubDate>
		<guid>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-32847</guid>
		<description>Nice! :) .. me gusta la retroalimentacion de experiencias

Saludos por Londres estimado, mientras yo aca en Buenos Aires ya pienso retornar a Chile :)</description>
		<content:encoded><![CDATA[<p>Nice! <img src='http://www.estadobeta.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .. me gusta la retroalimentacion de experiencias</p>
<p>Saludos por Londres estimado, mientras yo aca en Buenos Aires ya pienso retornar a Chile <img src='http://www.estadobeta.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ismael</title>
		<link>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-31257</link>
		<author>Ismael</author>
		<pubDate>Wed, 09 Apr 2008 10:57:54 +0000</pubDate>
		<guid>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-31257</guid>
		<description>Para extender tu ejemplo en Javascript, se puede delegar la ejecucion de las funciones. En el clasico caso de un validador de formularios:

&lt;pre&gt;
function validar( tipo, valor ){

  var validadores = {
    email: Validadores.email, // sin parentesis!
    not_empty: Validadores.notEmpty,
    alphanumeric: Validadores.alphanumeric,
    rut: Validadores.rut
  };
  var validador = validadores[tipo] &#124;&#124; Validadores.default;

  return validador( valor ); // lo ejecutamos solo al final
}
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>Para extender tu ejemplo en Javascript, se puede delegar la ejecucion de las funciones. En el clasico caso de un validador de formularios:</p>
<pre>
function validar( tipo, valor ){

  var validadores = {
    email: Validadores.email, // sin parentesis!
    not_empty: Validadores.notEmpty,
    alphanumeric: Validadores.alphanumeric,
    rut: Validadores.rut
  };
  var validador = validadores[tipo] || Validadores.default;

  return validador( valor ); // lo ejecutamos solo al final
}
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ismael</title>
		<link>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-31256</link>
		<author>Ismael</author>
		<pubDate>Wed, 09 Apr 2008 10:52:03 +0000</pubDate>
		<guid>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-31256</guid>
		<description>@fabian: de que se puede, se puede, y tiene sentido si los valores que quieres retornar son en si producto de operaciones complejas. Tu ejemplo no esta tan lejos de un tipico Factory que retorna subclases. En Ruby:

&lt;pre&gt;
class Factory( tipo, parametros  )
  clases = {
    :primero  =&gt; PrimeraClase,
    :segundo =&gt; SegundaClase,
    :tercero   =&gt; TerceraClase
  }
  cl = clases.fetch( tipo, DefaultClase ) # retorna DefaultClase si tipo no existe
  return cl.new( parametros )
end
&lt;/pre&gt;

En Javascript se puede hacer algo similar. Si el ejemplo asume que las distintas clases tienen la misma interface, esto es basicamente polimorfismo.</description>
		<content:encoded><![CDATA[<p>@fabian: de que se puede, se puede, y tiene sentido si los valores que quieres retornar son en si producto de operaciones complejas. Tu ejemplo no esta tan lejos de un tipico Factory que retorna subclases. En Ruby:</p>
<pre>
class Factory( tipo, parametros  )
  clases = {
    :primero  => PrimeraClase,
    :segundo => SegundaClase,
    :tercero   => TerceraClase
  }
  cl = clases.fetch( tipo, DefaultClase ) # retorna DefaultClase si tipo no existe
  return cl.new( parametros )
end
</pre>
<p>En Javascript se puede hacer algo similar. Si el ejemplo asume que las distintas clases tienen la misma interface, esto es basicamente polimorfismo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fabian Ramírez</title>
		<link>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-30002</link>
		<author>Fabian Ramírez</author>
		<pubDate>Sat, 05 Apr 2008 17:30:44 +0000</pubDate>
		<guid>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-30002</guid>
		<description>Excelente tu propuesta para evitar esas tediosas condiciones. 

Lo que me pregunto si podrian esas condiciones devolver objetos o funciones.

Quizas podría ser algo asi?

function obtenerFunciones( tipo ){

  var funciones = {
    exito:      this.exito(),
    error:     this.error(),
    invalido: this.invalido()
  };

 
  return funciones[tipo];
}</description>
		<content:encoded><![CDATA[<p>Excelente tu propuesta para evitar esas tediosas condiciones. </p>
<p>Lo que me pregunto si podrian esas condiciones devolver objetos o funciones.</p>
<p>Quizas podría ser algo asi?</p>
<p>function obtenerFunciones( tipo ){</p>
<p>  var funciones = {<br />
    exito:      this.exito(),<br />
    error:     this.error(),<br />
    invalido: this.invalido()<br />
  };</p>
<p>  return funciones[tipo];<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vladimir</title>
		<link>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-27164</link>
		<author>vladimir</author>
		<pubDate>Wed, 19 Mar 2008 16:26:14 +0000</pubDate>
		<guid>http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-27164</guid>
		<description>al menos en JavaScript, hay que tener cuidado "ordenar" el código de formas distintas, sobre todo con lo que menciona el artículo: condiciones anidadas (o enredadas).

ya nos lo cuentan los &lt;a href="http://blogs.msdn.com/ie/archive/2006/11/16/ie-javascript-performance-recommendations-part-2-javascript-code-inefficiencies.aspx" rel="nofollow"&gt;chicos de IEBlog&lt;/a&gt;, en donde un SWITCH "cuesta" mucho más que un (o varios) IF.  esto toma relevancia en el caso de JS, ya que el código se ejucuta en el cliente, pudiendo demorar demasiado la aplicación.</description>
		<content:encoded><![CDATA[<p>al menos en JavaScript, hay que tener cuidado &#8220;ordenar&#8221; el código de formas distintas, sobre todo con lo que menciona el artículo: condiciones anidadas (o enredadas).</p>
<p>ya nos lo cuentan los <a href="http://blogs.msdn.com/ie/archive/2006/11/16/ie-javascript-performance-recommendations-part-2-javascript-code-inefficiencies.aspx" rel="nofollow">chicos de IEBlog</a>, en donde un SWITCH &#8220;cuesta&#8221; mucho más que un (o varios) IF.  esto toma relevancia en el caso de JS, ya que el código se ejucuta en el cliente, pudiendo demorar demasiado la aplicación.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
