呓语Beta 2.0 首页 镜头后 灶台前 捐赠者名单 有趣的小站

[Date with Rails] 前言

文档信息

前言

Rails框架一直被誉为敏捷开发的不二首选,开发速度之快在我刚刚接触Rails时确实让我惊讶了好一阵。一个命令就可以搞出来一个简单的Blog框架,虽说不是很美观,但基本的CRUD功能是完整的,稍作调整就可以直接上线了。

随着最近一段时间对Rails的使用和研究,体会逐渐加深。在正式开始《Rails的约定》(Date with Rails) 系列之前,上这篇做简单的说明。

选择Rails的原因其实就是效率。敏捷开发能给开发者更快的呈现开发成果,从而更快的获得反馈,迭代修改获得更好的用户体验。而Rails对于各种小的增量修改提供了一整套工具和机制,让修改变得更加方便和快捷。当然这些便利都是有代价的。

Rails哲学

Rails崇尚的设计理念是规约胜于配置。当我第一次听说这句的时候还不是太明白,经过这一段时间对Rails的学习,我觉得应该改成“约定胜于配置”。这也是本系列《Rails的约定》名称的由来,Rails强调的是规范和约定。Rails中大量的约定使得一些开发过程是可以预见的,从而使得代码重用的程度更高,加速应用的开发。比如你在参加一个公司面试之前往往会准备一些HR可能会问到的问题,而实际面试过程中这些问题会用到一部分,或者根本用不上。原因就是你无法预测HR究竟会问些什么。而如果假设HR问的问题是一定的,你就可以非常有针对性的集中精力准备问题,甚至可以设计好最后与HR握手道别时的笑容。如果真的是这样,那么你的所有准备就是非常高效的。很明显,这里的HR就好比真正的框架使用者对框架的配置,如果允许框架使用者任意配置框架行为,那么你几乎不能预见任何框架使用者的任何行为。天知道你的框架会遇到多么变态的使用者呢!但如果将基本配置稳定下来,你可以在框架中为使用者做的事情就很多了,等这些框架提供的功能做好后,由于约定的稳定性,可能被很多框架使用者直接“拿来主义”,开发效率自然就会高了。

但这样做刚刚提到也是有代价的,那就是对于框架的使用者来说,学习成本很高。因为他们无法对框架根据自己的使用习惯进行配置,而在初学时只能去适应Rails的各种约定,造成一种很不爽的感觉。但这种学习成本也是很值得的,比起其他有众多配置选项的框架来说,只要你学习了Rails的约定,这些约定在Rails世界中是放之四海皆准的。

起初我是做PHP的,熟悉PHP的朋友知道有个Zend Framework框架,算是PHP的官方框架了。据说ZF的设计思想就是按照Rails的“约定胜于配置”这个理念来的,但是我在起初的几个版本试用过程中有非常糟糕的感觉。因为ZF对于目录结构和文件名都有很明确的约定,这样才能让你自定义的Model或者Controller,亦或View工作。如果名字中大小写错了,或者少写了个末尾的复数s,你就去Debug吧,动态语言这点可是非常不好玩的!而当你查找到写错的文件名或者目录名称的时候,你就会走到另一个极端!每次新建文件都养成反复检查文件名的强迫症!有效率么!但这点在后续的ZF版本中有比较大的改观。这几个ZF版本的杯具原因正是只提供了约定,但没有给框架使用者提供自动化的实现约定的工具。而Rails这点做的很好,有很强大的各种自动生成文件结构和文件内容的工具,甚至连类名都帮你写好。自从用了Rails,强迫症就说白白了。

Rails还提供了非常出色的数据库middleware,这就是rake,后续会详细介绍它。但ZF初期还需要自己创建数据库的表结构,Django比ZF出色许多,不过数据库的使用上感觉也不如Rails方便。当然Django和Rails的比较是建立在一个Django新手和Rails新手基础上进行的,对于骨灰级玩家来说,总有一些妙笔生花的代码或者方法来压榨框架的各种性能。对于初学者来说,Rails比Django更容易上手,因为Rails为使用者做的更多。

声明

本系列虽然是面向初学者,但不提供Rails环境配置教程,因为各种用到的工具都有非常详细的文档。但文档基本都是纯英文的,是否有中文译本尚不清楚,所以跟李雷和韩梅梅一起念书很重要啊!有木有!

环境

总结

鼓吹了这么长时间的“约定胜于配置”,本系列的立足点就在于Rails的各种“约定”。敬请期待:一连串的Rails新手抒发Rails带来的各种惊喜和思考。

修订日志

付费支持

由于本网站没有广告和任何形式的收入来源,希望获得您的资助。每篇技术性文章和每期shellcasts视频定价人民币1元,在您付费后可以任意观看和下载。

可以使用支付宝手机钱包扫描下方的二维码进行付款操作或者用支付宝转帐给richard.ma.19850509@gmail.com,谢谢!

Fork me on GitHub