2010-11-08 57 views
1

我写了一个method to standardize a USPS address。为了测试它,我想让第45行的open(URI.encode(uri))返回一个模拟的指定响应,以防万一您没有连接到Internet等。我如何使用Rspec来做到这一点?我是否需要将方法分解为两个?BDD,单元测试和设计模式

我不愿意把方法分解成部分,除非我重复使用这些部分。如果我只用了一次,我就把它放入函数中。这样,我避免了额外的函数调用(原因是没有额外的函数调用效率更低?)。这是一个坏主意吗?

有时候代码项目有很多不同的类和函数,它们都是模块化和抽象的,所以它使我更加容易理解。我不得不跳到不同的功能。也许我应该用ctags来使用vim。

但是,如果你不打算重复使用不同的零件,为什么要拆分函数?

我没有看过设计模式尚未,但我在读这本书可可设计模式

谢谢!

马特

回答

3

为什么分手的功能,如果你不 将要重用不同 部分?

为了清晰起见,便于测试。

按相反顺序:如果您有两部分功能并且已损坏,则不知道哪个部分损坏。如果你已经打破(并测试)了这些部件,你就会知道它们中的哪些是坏的(或者它们都是;这些可能是一些最困难的错误,无需进行非常小功能的小测试)。当你开始说话时,这变得更加真实,而不是关于两部分功能,而是关于二十或五十部分功能。

在清晰度方面,您曾经说过,对于您来说,使用更多的类和方法代码难以遵循,难以理解。我们中许多人认为相反是真实的。一个小功能很容易理解。如果它的名字很好,那么其他功能的使用也很容易理解,而且比内置的更容易理解。抽象对良好的软件工程至关重要;学会去爱它。