分享 写 Rails 请遵循 Sandi Metz 的规则

QueXuQ · 2014年07月25日 · 最后由 blacktulip 回复于 2014年07月28日 · 2859 次阅读
  1. 每个类代码不可以超过 100 行
  2. 每个方法代码不可以超过 5 行
  3. 方法参数不可以超过 4 个,hash 项也包括在内
  4. 控制器之可以初始化一个对象。而且视图层只可以使用一个实例变量,并且只可以在这个对象上调用方法(@object.collaborator.value 这种是不可以的)。

原文: http://robots.thoughtbot.com/sandi-metz-rules-for-developers

有点难

rails 本来就不遵循这个规则

rails 好难写,还是写写 ruby 代码好了

http://book.douban.com/subject/10737309/ 推荐大家看这本书《Practical Object Oriented Design in Ruby》,也有中文版,不过翻译的语句太晦涩。

又不能写太多 private methods... if else 又要多用 private methods... class 还不能超 100 行... 茫茫多的 class 么... →..→

这种僵化的规则比 Bad Design 更加祸国殃民

就不遵守,你来咬我呀

方法代码不超过 5 行,这个难啊,一大推一行方法体的方法。。。

喷的人不少。其实一点都不难。就算开始有点难,后面写多了就很舒畅。

这个道理就和 OOP 一样。OOP 也不是铁则,你用面条代码一样可以写出同样功能的东西,只不过用了 OOP,代码的灵活性和可维护性就强很多。这个也是一样。

除了第四条只适用于 Rails 或其他 web 框架,其他放在 Ruby 上都通用。

#10 楼 @billy 即便在 rails 当中,有时候也会发现,多引入一个 实例变量 对性能的提升那是翻几倍的。而且我记得,我看过的那份最佳实践中,一个 action 不建议超过 2 个实例变量,可没说只能有 1 个。

这个很难吧,尤其 model,我见过 model 最多上 5000 行的。呵呵。。。

@Victor 这个只是通用原则,你真需要变通时也不能拦着你啊。有一个原则好过没有原则,至少你在变通时会有所约束,会给自己或 team 一个理由,比如说性能可以大幅改进。

15 楼 已删除

#13 楼 @small_fish__ 这意思就是长了就抽出去而已

需要 登录 后方可回复, 如果你还没有账号请 注册新账号