当前位置: 首页 > news >正文

DHH观点:为什么我偏爱Ruby?

DHH观点:为什么我偏爱Ruby?

David Heinemeier Hansson(DHH)在RailsConf 2006的Keynote Address中讨论Rails具有各种conventions时,提到这样的观点,即任何一种paradigm都不是万能的,任何paradigm都会有例外情况,例外情况就须要例外处理;Rails在提倡其conventions的同时,仍然允许我们避开conventions,采用更原始的办法来处理同样的事情。Rails正是这种既具有明显conventions又允许例外情况的优秀语言。对此,DHH说如是:

..And that's why I personally love Ruby. Ruby has strong opinions of how you should do things, but it allows you to do basically everything if you really, really want to. A private method, it is only private until you call, well, .send(), simple for the method name. You can circumvent these things because sometimes it's DAMN useful to be able to circumvent these things, and you know the trade-offs -- you know that this special piece of code is being written in special way because it needs special consideration, it's not like the rest, and I should consider carefully the tradeoff I'm making.

……这也是我个人偏爱Ruby的原因:对于“你应该如何做事情”,Ruby持有强烈的观点,但在你真的非常非常想绕开conventions做事情的时候,Ruby也允许你做几乎所有事情。比如,private方法是私有的,但若你使用.send()进行调用,这种私有性就失效了。在Ruby中你可以绕开规则,因为有时候绕开规则真的非常受用,而且你在Ruby中绕开规则时,你会非常清楚其涉及到的利弊权衡与折中——你知道,对这一段特别的代码需要作特殊考虑,它是以特殊的方式写就的,它与惯常用法不同,你应该仔细考虑你所做的利弊权衡与折中。

# 有时候绕开规则真的非常受用
class Klass
  private
    def hello(*args)
        puts "Hello " + args.join(' ')
    end
end

k = Klass.new

# 使用 .send() 方法绕开private访问控制规则
k.send :hello, "gentle", "readers"

# 按惯常方式会受到访问控制规则的制约:
k.hello("gentle", "readers")
# Klass.rb:10: private method `hello' called for #<Klass:0x2b4b2dc> (NoMethodError)


转载于:https://www.cnblogs.com/kingofark/archive/2006/12/13/591118.html


http://www.taodudu.cc/news/show-647376.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 想到就去做
  • FTP中的收获
  • ASP.Net2.0 数据绑定控件的优越性在哪里?
  • 装AJAX.NET 1.0的环境,我遇到个问题,进来解答下
  • 信任的力量
  • 不能装载通讯模块。驱动程序安装不正确。
  • 面向搜索的中文分词设计
  • SQL Server 2005与2000写法上的差别
  • CG笔记之一——透视投影
  • SQLite B+树实现代码
  • Some thoughts on my own O/R Mapping or Code Generation tools
  • [翻译] 构建完美的WPF开发工作站
  • J2EE Architecture(4)
  • JSF优点(转载自中国IT实验室)
  • 如何自学JSP。--摘抄http://hi.baidu.com/comasp
  • max与top的效率
  • 精确计算代码执行时间
  • 理解 ActivityExecutionContextManager
  • Linq 演变的过程(delegate = Lamb = Linq)
  • 光阴四载,梦想在望
  • CSS常用文本属性
  • VSS2005 添加文件夹方法!
  • 一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...
  • DotNetNuke与MemberShip的结合(五年版) 三步汇总
  • 快速恢复Word、Excel的默认初始设置
  • AnkhSVN 1.0.2778 简体中文版发布
  • [转]获取xml节点值和属性值(兼容ie和firefox)
  • 请问如何把.net framework框架集成在安装程序里头?
  • 修改资料时碰到的问题,
  • 过滤脚本(C#,script,iframe,html)