Rails初印象

来源:互联网 发布:曲线积分理解 知乎 编辑:程序博客网 时间:2024/04/29 05:16

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://dreamhead.blogbus.com/logs/19324827.html

 

是的,我在学习Rails。

我所了解到的,大多数人是因为Rails而学习Ruby,像我这种了解Ruby却对Rails一窍不通似乎是异类。道理上来说,传统的途径应该是先学语言,再去了解相关的开发框架,像Rails这样喧宾夺主的情况,也算是异类了。当然,也正是因为Rails的喧宾夺主,才让人们有了更多的机会认识Ruby,了解Ruby的优雅。

趁着我还不那么了解Rails,把Rails留给我的初印象记录在这里,算是一个初学的记录。

Convention over Configuration(CoC),这是Rails广告给我留下的最深印象。这是一种改变业界对软件开发认知的思想。如同Spring让我们认识了Dependency Injection(DI),进而改变了我们的设计方法。Rails让我们认识到,原来有时候程序设计并不需要那么灵活。一片惊呼之后,效仿者蜂拥而至,人们纷纷尝试把这个想法带到自己熟悉的平台,其场面与Spring当年带来的DI容器热如出一辙。

如果Spring只有DI,它并不会带来真正的变革,同样,Rails也不是只有CoC。在我看来,CoC之外,Rails还集成了Web开发的实践。

Web开发实践有哪些?首当其冲的自然是MVC的架构,所以,在Rails中,明明白白的在目录结构上就把MVC分得清清楚楚。不过,我们还是抛开MVC这种路人皆知的答案,看一些具体的东西吧!

用Java写Web方面的应用时,我最担心的问题是如果一不小心上了某个框架的贼船,比如Servlet,结果就是为了看到自己程序能够正确运行,不得不把应用部署到服务器上。一旦出现了问题,解决问题就变成了一个非常低效的过程,因为我们不得不一次又一次的进行部署,大好的年华便随风而逝了。所以,对我而言,做Java应用的设计时,一个指导性原则就是尽量不依赖于任何框架,这样,就可以把真正的逻辑剥离出来进行测试了。初涉Rails,我也有类似的疑问。但我发现,原来Rails框架本身已经替你考虑好这个问题,它把测试的考虑也内建到框架之中,这样便可以很容易的针对每个Controller编写测试,而又不必理会部署的消耗。

Rails在测试方面有很多的考虑,它清楚的分出为Model而写单元的测试,为Controller而写的功能测试和跨越Controller的集成测试,而Fixture这个概念的存在,让我们很好解决测试数据的问题。这一切实际上都是一些优秀的软件开发实践。实际上,像这样的实践,Rails开发框架中还有很多,比如,如何处理页面布局、如何使用Ajax、如何管理数据库的迁移、如何让自己的应用Restful等等。使用Rails,不经意间,我们便可以走上一条正确的路。同许多开发实践一样,单独来看,这些做法本身并看不出多大的价值,但放到整个软件开发过程之中,便可以极大的提高开发生产率,尤其是在后期维护阶段。

不同于之前用过的一些框架,需要在实践中摸索正确的用法,Rails是第一个让我强烈的感受到开发实践内建其中的框架。只要走在Rails的道路(Rails Way)上,那么无论如何都不会偏离正确的方向太远。正确的道路何在?不得不提起《Agile Web Develpment with Rails》(中文版《Web敏捷开发之道》)。技术,常常是养在深闺无人识。其实,这个世界上一点都不缺好的想法,好的做法。我们经常会看到一些新东西让我们感慨,原来还可以这么做,但是,大多数时候,我们并不知道这些东西的存在。这本书的出现,恰到好处的向人们展示了Rails的优秀,比如前面提到的那些实践。不同于很多板着面孔教育人的计算机书,这本书轻松愉快的把一个完整的开发过程展现在人们面前。大多数人几乎是同时认识这本书和Rails框架的,所以,几乎一开始,Rails一族便走在正确的道路上。

不过,Rails还很年轻。年轻的结果就是不稳定。《Agile Web Develpment with Rails》第一版和第二版之间号称有70%的变动,而Rails 2.0又让第二版中的程序遭遇起步停车,一开始便会有差异。有些时候,这会打击初学者的积极性,也会让希望采用Rails的企业望而却步。

这便是我对Rails的初印象。
 

原创粉丝点击