刚刚从 go/java 转来写 rails,在这两门语言的 web 框架里,都有很多层级用来解耦,例如 service、biz、DO、DTO、VO……很多很多层,但是 rails 的 api only 模式自带的只有 controller 和 model,这让我很困惑—当然,我可以自己去实现那些层级。但还想请教一下,Rails 提倡的分层哲学到底是什么样的呢?
因为如果会扩展,以及考虑到作为初始架构别人很有可能就跟着你的风格写了。
我之前在一个组见过一个 c++ 函数,写了 1500 行,里面各种 if 和 goto 乱跳,就是因为刚开始的哥们儿写的时候用了这种形式,全然不考虑后续的人可能就改吧改吧复制一下你的代码然后就怼上去的可能性。
但是。很明明是很小规模的项目,orm 引入几行代码,一个方法定义体就能搞定的事。
这样代码读起来,一个代码文件,半屏代码,编辑滚动条都不用滚的,很方便又很清晰。
The Rails Doctrine 是 Rails 哲学的总结
原版:https://rubyonrails.org/doctrine/
中文翻译:https://github.com/ruby-china/the-rails-doctrine
其中“多元化的设计模式”这一节说了 model 层为什么是这样的,简单来说就是:实用。
如果还是觉得“我就是需要 service 层啊,Rails 不提供就是不对”,那么可以试试我写的这个 gem https://github.com/chloerei/active_service ……