rubyonrails:一个.NET程序员为什么学习Ruby on Rails?

  你是位资深.NET而且已经用ASP.NET构建过许多Web应用

  无数个不眠的夜为了让ASP.NETControl控件生命周期中事件驱动模型按你想要方式执行你费尽心血深入细节

  你精通于使用诸如Presentation Model、Model View Presenter这类设计模式对你应用进行分层以使其更易测试和维护

  你认为Ruby on Rails只不过是众多被吹嘘技术中在它还没有获得可观市场份额的前你不会给予它过多关注

  欢迎来到我世界如果你还在读这篇文章我向你致敬对于我下面说法你可能会充满了好奇为什么我——名资深.NET在经历了个月Ruby on Rails学习后会认为:只有在我了解了Ruby on Rails的后才能以较少时间和编码完成以前开发过许多应用?

  老实说我仍然认为.NET很棒它为我提供了个平台能让我向客户源源不断地提供巨大商业价值但我时刻提醒自己:个简单问题有大量区别思路方法和技术可以解决它并且总有些比其它更好衷情于某种技术必然会产生些无意识偏见这最终会阻碍我为客户提供商业价值能力例如对像Ruby这样动态脚本语言了解使我以为:和使用编译型语言相比我可以花费更少时间去编写简单自动处理Batch/Shell脚本

  为什么不呢?

  下面这几件事是我(个.NET员)学习Ruby时发现些典型区别希望你能喜欢

  不需要编译Ruby中没有编译概念切都在运行时发生作用有人认为代码编译可以防止编码时粗心那么你可能应该去看下测试驱动开发是如何工作连续代码集成(当然了不是每天都要构建)单元测试(不涉及数据库和web服务测试)和依赖注入可以帮助你生成质量良好代码使你能够充满自信灵活改变你代码编译保障作用下子变不那么重要了

  动态增加类行为——不使用Decorator模式在静态类型语言中要想动态增加类行为我们可以使用Decorator模式或者模板思路方法而在Ruby中有更多思路方法可以在不复杂化对象设计结构情况下很简单地做到这这只是语言本身对它支持例如:将模块作为minxin使用使用_eval, instance_eval思路方法等事实上甚至可以通过编程方式在运行时定义类思路方法在静态类型语言中也可以通过代码生成来完成它但了解更多思路方法可以让你向个优秀问题解决者迈进

  (译者注:mixin在面向对象编程语言中是种提供某些功能给子类继承但mixin并不能例子化从某个mixin继承并不是什么特殊形式而它更适于收集功能某个子类甚至可以通过继承个或者多个mixin选择继承它全部或者多数功能个mixin能延期到运行时定义和绑定思路方法而属性和例子参数也可在编译时才被定义这区别于我们常见方式比如先定义所有属性、思路方法并在编译时进行化等)

  通过去除所有类型声明和接口声明将代码库“瘦身”10-20% Ruby是门动态类型语言你不需要在使用变量的前声明它类型或者为思路方法签名中参数定义合适类型这意味着你代码会变得更“瘦”但这是以代码难于调试和难于进行跟踪为代价对吗?并非如此如果你相信单元测试和良好面向对象设计概念如果你类小而紧凑思路方法短而精良并且经过了很好单元测试那么调试和跟踪将会很简单

  及时Ajax化Ruby on Rails内置对script.aculo.us库支持(script.aculo.us是个Ajax类库里面包含了大量炫目Ajax效果使用这些效果可以让你应用更具有交互友好性)在许多情况下这相当于在ASP.NET中将个Control控件标签拖到html页面上然后在别地方(在Rails中这个地方是控制器)为其编写思路方法以处理Ajax在服务器端Web请求Web页面支持Ajax功能就像Google Suggestautocomplete或者拖拉排序那样就这么简单



  使用Rails不需要专门O/R映射使用命名惯例对数据库表和列以及你领域模型对象命名可以让你忘记亲自进行O/R映射痛苦Ruby on Rails会为你实现这在最简单情况下在视图上增加个字段并对它进行持久化你只需要在html中增加个文本框并在相应数据库表中增加个新列然后你就可以看到新输入文字被存储在了数据库新建列中就这么简单

  用Ruby脚本构建、部署或发布应用比使用NAnt更好Rake是Ruby on Rails开发中使用标准构建工具Rake使用Ruby语法这意味着在构建和部署区别应用时你需要使用Ruby去编写你构建脚本作为门语言Ruby在以下几个方面尤为出色:处理文件和目录创建高级正则表达式支持有多少次你需要在批处理和NAnt脚本中执行以下操作:把服务器A上a目录下所有以.sql为扩展名文件拷贝到服务器B然后依次执行这些文件如果你讨厌批处理脚本在编程方面限制或者不喜欢以NAnt中那样xml格式去编写脚本你会喜欢Rake

  不劳无获学习Ruby时候我必须克服许多障碍首先我不得不接受这样事实:和正在使用“舒适”技术相比寻找Ruby解决方案要花去我更多时间但是用不了多久你就会感到喜悦你可以用大量方式解决区别问题其次学习Ruby/Rails让我受益非浅通过学以致用加深了对知识理解记住对于你曾耗费时间学过东西要么使用它要么任其消逝



Tags:  rubyonrails安装 rubyonrails教程 rubyrails rubyonrails

延伸阅读

最新评论

发表评论