2012-12-03 77 views
1

http://www.jetbrains.com/idea/webhelp/extract-parameter-object.html提取方法參數是一個好主意嗎?

對於有大量參數的方法,我一直髮現提取方法參數是一個好主意。

public void Method(A a, B b, C c, D d, E e); 

成爲

public class Wrapper {A; B; C; D} 

public void Method(Wrapper wrapper); 

這使我:

  • 有較好的可讀性在我的代碼
  • 包裝類中執行這些參數的驗證和跨層重用/組件如果需要的話。
  • 提供較脆弱的方法簽名。

有沒有其他的優點/缺點,你會看到這將有助於說服某人正在寫有很多參數的方法?我正在編寫C#4,如果這有所作爲。

+0

對於一組相關的參數,這可能是正確的。如果您有大量參數,則可能是存在獨立子集的情況。你不想將獨立子集連接在一起。 –

回答

0

我能想到的唯一缺點是在系統中有一個額外的抽象,要求您在訪問之前抽取(儘管很平常)實際數據。我甚至不確定它是否可以被稱爲劣勢。

參數封裝的最重要的優點是具有可適應未來變化的健壯的定義良好的接口。

0

更深的優點是,當您將參數包裝到新類中時,您會意識到可以將某些行爲移動到新類中。這是因爲修改參數的方法的主體可能會類似地操作參數。將這種常見行爲移到新類中,可以消除大量代碼重複。參數驗證只是可以移入新類的行爲的一個示例。

相關問題