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

DHH观点:为什么我偏爱Ruby?相关推荐

  1. [转载] Ruby、Rails、Agile的启示

    转自:http://vipnews.csdn.net/newscontent.aspx?pointid=2008_03_03_170600555 文/杨祥吉 本文作者以使用Ruby和Rails进行创业 ...

  2. 倦怠和枯燥_启动倦怠

    倦怠和枯燥 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 启动倦怠 (Start-up Burnout) Shabbat is the seventh day o ...

  3. 测试驱动开发(TDD):质疑与思辩

    参考链接: Joe.Dev的博客:http://joe-dev.blogspot.com/2014/06/tdd-is-dead.html Martin Fowler的视频讨论总结:https://m ...

  4. qcon_从QCon San Francisco 2009中学到的重点知识和教训

    qcon 在本文中,我们介绍了许多博客上 有关 QCon的博客的观点和观点,使您可以感受到QCon San Francisco(2009年11月)的印象和经历. 从最初的教程到最后的会议,人们在他们的 ...

  5. 和我一起读英文书吧-beyond feelings【1】

    你与成功的距离--批判性思考者和非批判性思考者的区别(1) 假装他们知道的比他们做的多,忽略他们的局限性,并假定他们的观点没有错误 与此相对,批判性思考者: "对他们自己诚实,承认他们不知道 ...

  6. 随笔 2022.7.21

    有一条快递信息,在一个闲置手机里躺尸了几天,没有最新购物,所以毫不在意.但是新买了药膏,下午刚好一起取回来.和路上猜想的一样,老谭的结婚请柬到了,但是最愉悦的还是有糖吃.可能是一天没吃饭(现在习惯了一 ...

  7. 标度不变性(scale invariance)与无标度(scale-free)概念辨析

    文章目录 1. 标度(Scale) 1.1 标度种类 1.1.1 名义标度 1.1.2 序级标度 1.1.3 等距标度 1.1.4 比率标度 1.2 常用标度方法 1.3 不足 2. 缩放(Scali ...

  8. 范凯观点:Ruby社区应该去Rails化

    InfoQ中文站报道过一些公司从Ruby转移到其他语言的新闻,包括Iron.io从Ruby迁移到Go:减少了28台服务器并避免了连锁故障.从Ruby向Java的迁移帮助Twitter挺过了美国大选和在 ...

  9. DHH Ruby Conf 2010

    2019独角兽企业重金招聘Python工程师标准>>> DHH(David Heinemeier Hansson)在Ruby Conf 2010上的发言.Ruby on Rails ...

最新文章

  1. Java从入门到精通08-二进制、位运算、移位运算
  2. cmd使用另一个Oracle的sid,(转发备用)Oracle SID在本机上已经存在,请指定一个不同的SID”的解决办法...
  3. 计算机词汇查询,计算机辅助英语词汇查询系统的设计.doc
  4. ASP運行Excel.Application出錯
  5. javascript优化--01高质量编码
  6. 去黑边_Vegas pro 17导入的素材有黑边咋进行去除的3种方法
  7. python3下载-python3
  8. Docker容器commit安装kali工具集
  9. 剑指_3.1数组中重复的数字(Python/C++)
  10. 瑞星杀毒软件2007 / 瑞星个人防火墙2007 - 免费试用
  11. TensorFlow 高级之一(实现单层神经网络)
  12. APP支付(微信、支付宝)
  13. 系统分析和设计方法之用户界面设计
  14. 释放docker日志所占空间
  15. macchanger克隆MAC地址
  16. 印度:农村是IT发展的根据地
  17. linux多磁盘块文件删除过程,如何整理Linux磁盘碎片
  18. 基于stm32的室内环境监测系统 9746字
  19. mmdetection学习系列(1)——SSD网络
  20. 中小型研发团队架构实践三要点

热门文章

  1. Spring事务管理机制
  2. 吃下去的东西老是往上翻上来_这间日日火爆的面馆,当年海藻带宋思明吃过
  3. 第一行代码学习笔记第七章——探究内容提供器
  4. Qt智能指针--QSharedPointer
  5. QWidget中加载QML页面并设置透明背景
  6. 组合电路Verilog的几种描述方式
  7. 4.2.2 OS之磁盘调度算法(FCFS、SSTF、SCAN、LOOK、S-SCAN、C-LOOK)
  8. 卡尔曼滤波器_使用卡尔曼滤波器和路标实现机器人定位
  9. Git 之五 通信协议(HTTPS、SSH、Git)、使用远程仓库(GitHub、GitLab、Gitee等)
  10. Oracle原理: 归档方式和日志文件