近期看了下重构的资料,提到‘Skinny Controller, Fat Model’。 1.那么 model,controller 需要定义共用函数,有人就定义 concern model 来包裹共用函数。而 Rails 4 已经内建支持 Concern。 大家会这样用么??? 2.假如 helper 里面需要定义共用函数呢?那么 mvc 都共用的函数呢??该怎么组织比较好呢??
1、“那么 model,controller 需要定义共用函数”
这不太正常,一件事要不在 model 做,要不在 controller 做。
concern 用在 model 和 model、controller 和 controller 共享代码。
2、Controller 和 helper 共用,有个 helper_method 宏。
全局都要用的逻辑,抽取成库,比如 Nokogiri。
#1 楼 @Rei 哦..我表述有误...我的意思也是 concern 用在 model 和 model、controller 和 controller 共享代码。谢谢
#2 楼 @sforce100 之前已经这样用了,这就是 Ruby 里面 Module 的用法
https://github.com/ruby-china/ruby-china/tree/master/app/models/mongoid
Concern 只是把这种用法提炼成模式。
http://yedingding.com/2013/03/04/steps-to-refactor-controller-and-models-in-rails-projects.html
#3 楼 @Rei 搭车问个问题,Concern 的设计只是给 model 或者 controller 相关的代码找了一个地方放置吗?
#5 楼 @zlx_star Concern 其实就是 Module
#6 楼 @Rei +1 我也是这样理解
使用 Concern 额外的好处是解决 Module 自己的依赖关系与写代码的时候组织清晰些
Fat model 对于简单的应用可行。大型的应用时就。。。
可以来尝试我的 Datamappify 哟 :D https://codeclimate.com/github/fredwu/datamappify
看了这段对话,使我开始阅读《Agile Web Development with Rails Edition 4》电子书,DHH 大作。