為什麼我們需要可測試的物件導向開發(翻譯 )

來源:互聯網
上載者:User
原文:Why you should think about TOOP- Testable Object Oriented Programming 作者:Typemock首席架構師Roy OSherove ---The Art of Unit Testing: With Examples in .Net的作者

我覺得物件導向設計\編程( Object Oriented Design\Programming)是時候要做些改變了。

品質和對可測試性、持續整合的追求在業界已經開始萌芽。

我們需要思考一個簡單的事實:在很多情況下,純OOD和可測試設計在概念上有些許衝突。我曾經寫過一篇文章,FXCop為了追求純粹的物件導向,移除了一些利於可測試性的特性(當然,作者鄙視了FXCop的團隊)。

以下是一些關於OOD/OOP要求“隱藏”,而可測試性(Testable Design)設計建議“公開”的例子。

OOD:不要公開那些不需要其他開發人員使用的私人成員或者方法。

Testable:通過介面,依賴注入,開放setters方法等方式 公開或者替換 那些對象裡私人的成員。

OOD:除非你需要讓別人擴充,否則把類給密閉(seal)了。

Testable:預設不允許密閉(除非安全方面考慮)以便使用者可以重用你的方法並按照他們的測試需要override。

OOD:只在你需要使用者override你的方法時才讓你的方法virtual。—-因為java預設是virtual,所以作者在這點上喜歡java。

Testable:只要可能,預設讓你的方法virtual,這樣那些需要寫測試的人可以繼承和override你的方法來解除一些依賴。

OOD:使用單例方法來確保只使用一個執行個體,不允許任何人觸及私人對象。

Testable:允許為了測試中解除依賴去替換單例對象。

OOD:除非需要,否則類型預設為private或者interna。

Testable:開放API裡那些你認為有助於測試專案的類型。

OOD:不要添加那些非必須的APIs。

Testable:添加特定的API(方法,介面,尤其類型)方便測試,這些對測試來說是必須的。

如果我們把”可測試性“添加到OOD詞彙中會怎樣呢?

“Testable Object Oriented Design: TOOD“(可測試的物件導向設計)

“Testable Object Oriented Programming: TOOP“(可測試的物件導向編程)

讓兩個詞彙貫徹在開發設計中,更加重視可測試性的需求。很多情況下,如果不遵從一些物件導向的最佳實務(多態這個特性對於可測試的設計就是非常重要的),

TOOD和TOOP可以讓你的設計更加SOLID

(參考Bob Martin的SOLID設計原則。這一系列原則經久不衰,它包括單一職責原則(Single Responsibility Principle),開閉原則(Open Closed Principle),裡氏替換原則(Liskov Substitution Principle),介面分離原則(Interface Segregation Principle),依賴反轉原則(Dependency Inversion Principle)。)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.