【翻译】不唐突的Ruby

不唐突的Ruby是任何保持你自己方式的Ruby代码,它不会让你写很多的样板、桩方法、打开类。它是解耦合的,测试运行的很快,一个类可以在一屏内展示,它的方法是很短小的,并且可以快速的重构。

不唐突的Ruby是一种精神状态,是你希望你的朋友们所书写的代码。既然你爱你的朋友,这里有一些指引,当你设计下一个Gem或者框架的时候会用到。

使用对象,而不是类

你的所有的参数应该是实例化的对象,调用者自身已经调用了.new方法,将构造器留给类的作者,永远不要强制调用构造函数的约定,或者永远不要以任何方式强迫别人去寻找怎样实例化自己的类。

永远不需要继承

对象继承是强迫用户利用构造函数做奇怪的事情的一种方式。什么时候调用super,参数是什么,等等。这对混入也适用,他们增加了类的命名空间的复杂性,增加理解的难度。所有的继承都会导致脆弱的系统。

依赖注入

在一个类中不应该使用其它类的名字。传入所有必须用到的对象。你不仅会为将来的灵活性感谢你自己,还会在一开始就发现测试变得更好了。

快速的单元测试

对一个较小的类进行单元测试应该很快,类应该很小。Mock对象缺乏继承,并且引入依赖注入。针对你朋友代码的测试不应该依赖于你自己代码的测试。理想的依赖应该在被测试的类和测试框架的范围内。

不要require接口

类应该考虑组成而不是被组成,最好的类应该考虑消费而不是被消费,它创建自己的规则。或许你达不到这个目标——在某些情况下一些东西需要被消费——但是这是一个有用的目标。如果这个目标没法实现,那么被require的接口必须简单,这个接口应该只包含一个或者两个方法。

数据而不是行为

数据是很好测试的,给一个方法传入一些数据,收到来自该方法的返回值,然后验证它是正确的值。永远不要强迫的你朋友做比这更多的事情,永远不要强迫他们做数据库查询、系统调用、产生随机数字等等,你要为他们做好这些事情。

永远编写代码

这篇文章的总体思路是,你的朋友总是能够只写代码。你永远不希望站在他的位置上,不要强制编写文档,不要改变他的类或者创造一些离奇的漏洞。你,作为一个Gem的作者和床架的设计者,应该是的碰朋友在构建他们自己的系统的时候不需要知道你构建的系统。

原文:

深入阅读: