2014-02-06 88 views
0

我知道如何編程包裹自上而下的類,但我想成爲一個更好的程序員。我有一些更加面向IO的類。一個帶有宏,一些頁碼和一個下載器界面的url,一個xpath將許多htmls組合成一個可管理的xml。有什麼不對的靜態方法

這個問題是在我的腦海中,我該讓最終用戶訪問該做的工作方法,或讓我的班級有一個單一的「跑」的方法?或者,我會按照原樣離開課程,而不使用run方法,並將方法添加到實用程序類中,該類僅構造該對象並返回其最終值。使用單一公共方法創建一個類感覺不對,但另一方面,製造一系列可以依賴的公共方法,從而導致我重新獲得因子的能力也感覺不正確。這裏

+0

請你的語言添加到問題標籤。謝謝 – Leo

+0

完成,對不起, –

+0

沒問題。祝你好運:-) – Leo

回答

1

您的問題似乎是single responsibility,你的方法似乎是在做(太)多不同的事情,因此需要很多公共的方法是測試。這是一個常見的指針,表示在編寫單元測試時,類是「錯誤地」構建的。

我會推薦這裏是你的類拆分爲多個的,邏輯的每片含部分只有一個責任。在每個類別中,主要方法都是公開的,並且在可測試的情況下完成預期的工作。原來的課程現在可以使用這些其他對象的輸出,而不必「知道」他們如何做。

+0

從某種意義上說,我已經有了。我使用htmlagilitypack和一個下載包裝器。我也使用敏捷包來執行xpath。 不要誤會我的意思即時通信開放這些方針的討論,但我的類有2種方法各約10線 –

+0

讓我們逆轉的問題。假設這兩種方法都是公開的。從用戶的角度來看它們有意義嗎?如果是這樣,將它們公之於衆是完全可以的。如果不是,其中一個是內部函數,應該是私有的,或者執行一些可以/應該由另一個對象執行的邏輯。從某種意義上說,在一類中有一堆方法會妨礙你重構的能力,但是將責任分配給專用對象會增加它的重要性。 –

+0

hrm,從用戶的觀點來看,我可能會認爲「爲什麼我必須調用第一種方法,只是爲了將結果輸入第二種方法」至少從其預期用途的角度來看。我想他們可以將這些方法單獨用於不同的目的,但不是爲了達到這個目的。 –

相關問題