Comments on: Incondicionalmente http://www.estadobeta.com/2008/03/18/incondicionalmente/ desarrollo web con estándares Tue, 14 Feb 2012 20:00:44 +0000 http://wordpress.org/?v=2.3-alpha By: Fabian Ramírez http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-32847 Fabian Ramírez Thu, 17 Apr 2008 21:58:33 +0000 http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-32847 Nice! :) .. me gusta la retroalimentacion de experiencias Saludos por Londres estimado, mientras yo aca en Buenos Aires ya pienso retornar a Chile :) Nice! :) .. me gusta la retroalimentacion de experiencias

Saludos por Londres estimado, mientras yo aca en Buenos Aires ya pienso retornar a Chile :)

]]>
By: Ismael http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-31257 Ismael Wed, 09 Apr 2008 10:57:54 +0000 http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-31257 Para extender tu ejemplo en Javascript, se puede delegar la ejecucion de las funciones. En el clasico caso de un validador de formularios: <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> Para extender tu ejemplo en Javascript, se puede delegar la ejecucion de las funciones. En el clasico caso de un validador de formularios:

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
}
]]>
By: Ismael http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-31256 Ismael Wed, 09 Apr 2008 10:52:03 +0000 http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-31256 @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: <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> En Javascript se puede hacer algo similar. Si el ejemplo asume que las distintas clases tienen la misma interface, esto es basicamente polimorfismo. @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:

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

En Javascript se puede hacer algo similar. Si el ejemplo asume que las distintas clases tienen la misma interface, esto es basicamente polimorfismo.

]]>
By: Fabian Ramírez http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-30002 Fabian Ramírez Sat, 05 Apr 2008 17:30:44 +0000 http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-30002 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]; } 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];
}

]]>
By: vladimir http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-27164 vladimir Wed, 19 Mar 2008 16:26:14 +0000 http://www.estadobeta.com/2008/03/18/incondicionalmente/#comment-27164 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 <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 "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. 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 chicos de IEBlog, 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.

]]>