2010-11-08 74 views
1

我寫了一個method to standardize a USPS address。爲了測試它,我想讓第45行的open(URI.encode(uri))返回一個模擬的指定響應,以防萬一您沒有連接到Internet等。我如何使用Rspec來做到這一點?我是否需要將方法分解爲兩個?BDD,單元測試和設計模式

我不願意把方法分解成部分,除非我重複使用這些部分。如果我只用了一次,我就把它放入函數中。這樣,我避免了額外的函數調用(原因是沒有額外的函數調用效率更低?)。這是一個壞主意嗎?

有時候代碼項目有很多不同的類和函數,它們都是模塊化和抽象的,所以它使我更加容易理解。我不得不跳到不同的功能。也許我應該用ctags來使用vim。

但是,如果你不打算重複使用不同的零件,爲什麼要拆分函數?

我沒有看過設計模式尚未,但我在讀這本書可可設計模式

謝謝!

馬特

回答

3

爲什麼分手的功能,如果你不 將要重用不同 部分?

爲了清晰起見,便於測試。

按相反順序:如果您有兩部分功能並且已損壞,則不知道哪個部分損壞。如果你已經打破(並測試)了這些部件,你就會知道它們中的哪些是壞的(或者它們都是;這些可能是一些最困難的錯誤,無需進行非常小功能的小測試)。當你開始說話時,這變得更加真實,而不是關於兩部分功能,而是關於二十或五十部分功能。

在清晰度方面,您曾經說過,對於您來說,使用更多的類和方法代碼難以遵循,難以理解。我們中許多人認爲相反是真實的。一個小功能很容易理解。如果它的名字很好,那麼其他功能的使用也很容易理解,而且比內置的更容易理解。抽象對良好的軟件工程至關重要;學會去愛它。