2012-09-22 42 views
0

我有34種不同的方法,它們只需要我的ViewModel類的一個參數,但是他們每個人只在類上使用兩個或三個特性。我想我寧願將這些屬性傳遞給這些方法,而不是整個對象。這是一種輕鬆重構的方法嗎?我試圖選擇我的函數中的所有文本,並做重構>提取方法希望它足夠聰明,看到只有2屬性的對象正在使用,並使參數列表只是這2個屬性,但它只是想再次採取整個對象。有沒有一種簡單的方法來重構C#中的參數?

也許我需要解釋我在做什麼...

我想寫這將產生一個wiki頁面文本的應用程序。根據輸入到UI中的值,它將生成模板的文本和使用該模板的文本,或者如果模板不是必需的,它將僅爲頁面生成文本。它有17個不同的部分,所以有17個函數在合併時創建模板頁面的文本,並且如果不需要模板,則有17個函數組合起來形成實際頁面。我是這樣做的,所以我可以一次測試更小的部分,而不是測試一個大型函數的整個輸出。

因此,目前這些方法中的所有34個參數都是1個參數,即從UI構建的整個對象。對我來說,這再沒有意義了。生成整個頁面的一部分的函數將永遠不需要知道在不同部分中使用的數據,並且如果有人嘗試在那裏使用它,那麼我知道有什麼地方是錯誤的。

+2

你爲什麼要這樣做?發送整個對象通常被認爲是很好的做法。然後,如果一個方法將來需要該對象的更多屬性,那麼在調用中沒有任何變化 - 該方法已經具備了它所需要的。發送一個對象更清晰。 –

+0

鮑勃,把你的評論評爲與我的相似。 ;) –

+0

@JohnLockwood哈,我upvoted你的答案。我其實希望沒有辦法做到這一點。 :) –

回答

7

有沒有理由不通過對象?對象通過引用傳遞,效率很高,而且如果你的實現需要更多的屬性,修改該函數比維護函數聲明更容易,並且追隨所有調用者。我會傾向於放棄它。

但是要回答您的具體問題,我不知道在Visual Studio中重構它的方法。這是爲什麼我會傾向於在工作的時候放棄它的另一部分。 :)

+0

我更新了問題。目前,這34種方法都有1個參數:從UI構建的整個對象。對我來說,這再沒有意義了。生成整個頁面的一部分的函數將永遠不需要知道在不同部分中使用的數據,並且如果有人嘗試在那裏使用它,那麼我知道有什麼地方是錯誤的。 – Nick

0

也許resharper可以幫助你,因爲它提供了很多different refactoring functionalities。您可以嘗試下載30天的試用版。不幸的是,目前沒有EAP程序打開,因爲他們正在發佈v7。

相關問題