Articles tagged 'Refactor'

重构 Rails 项目之最佳实践

Mar 04, 2013 Rails Refactor

春节前受 Terry 邀请帮助国内的一个公益项目 Re-education 做代码重构。开放课堂项目是由教育大发现社区发起,成都 ThoughtWorks,成都彩程设计公司,成都超有爱教育科技有限公司等一起合作开发和运营的教育公益网站,是一个提供给小学3-6年级师生设计和开展综合实践课的教育开放平台。项目代码放在 GitHub,采用 Ruby on Rails 作为开发框架。

很高兴我们 Fengche.co 团队能参与到这个公益项目的开发中,我相信这是个对社会很有价值的事情。征得发起方的同意,我把这次重构工作做成了一次在线秀,也正是因为这次这样的形式,和很多朋友直接在 Join.me 上交流了很多 Rails 项目重构方面的想法。通俗点说,重构就是对内要通过修改代码结构等方法让代码变得更美,提高可阅读性和可维护性,而__对外不改变__原来的行为,不做任何功能的修改。所以我们做重构要做好两点: 1) 一次只做一件事情,不能修改了多个地方后再做验证 2) 小步增量前进,路是一步一步走出来的。同时,为了保证重构的正确性,必须要测试保护,每一次小步修改都必须要保证集成测试仍然通过。之所以要保护集成测试而非单元测试,正是因为重构只改变内部结构,而不改变外部行为,所以,单元测试是可能失败的(其实概率也不高),而集成测试是不允许失败的。基于 Re-education 的代码,这次重构主要涉及了 Controllers 和 Models 两个方面。有兴趣的朋友可以去 RailsCasts China 观看视频。

Rails 做为一个 Web 开发框架,几个哲学一直影响着它的发展,比如 CoC, DRY。而代码组织方式,则是按照 MVC 模式,推崇 “Skinny Controller, Fat Model”,把应用逻辑尽可能的放在 Models 中。

......

Read more →