Skip to content

Instantly share code, notes, and snippets.

@alberto
Created July 29, 2013 20:42
Show Gist options
  • Save alberto/6107632 to your computer and use it in GitHub Desktop.
Save alberto/6107632 to your computer and use it in GitHub Desktop.
¿Cómo expresarías esto con un sólo return por método?
module DownloadPolicy
def self.allow_download_for?(screencast, user)
return false unless screencast.published?
return true if screencast.free?
return false if user.nil?
return user.has_screencast_access?
end
end
@ialcazar
Copy link

Esto da para una Kata en condiciones muy del estilo del Fizz Buzz!

@arturoherrero
Copy link

Éste método está haciendo varias cosas, entiendo que cuando llamamos a allow_download_for? ya tenemos un screencast válido (está publicado) y un user válido (que no es nil). Con todo no me termina de gustar la solución.

module DownloadPolicy
  def self.allow_download_for?(screencast, user)
    screencast.free? || user.has_screencast_access?
  end
end

@alberto
Copy link
Author

alberto commented Jul 30, 2013

@ialcazar @ignasi35 os parecen más legibles vuestras soluciones?

@GermanDZ @arturoherrero no me redefináis el problema, ni es más complejo ni más sencillo :P

@GermanDZ Como decías por twitter, lo veo sobreingeniería. Creo que tendría que crecer y complicarse bastante para justificarlo o dudo que la solución fuese más sencilla, y eso que alguna vez he hecho algo similar ;)

@arturoherrero el código es el que es precisamente porque pueder haber screencasts no publicados y usuarios nulos.

Por cierto, el código es real, lo he sacado de un screencast de Destroy All Software.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment