我的問題不是「如何處理太多參數」,我在How to avoid "too many parameters" problem in API design?找到了答案。我需要的是有關實施的補充信息。「太多參數」保留私有變量或將其替換爲參數類
我有一類
internal class SomeClass
{
private string value1;
private DateTime value2;
private SomeEnum value3;
// and the same until valueALot
internal SomeClass(string val1, DateTime val2, SomeEnum val3, ...)
{ }
}
,我和一個新的類SomeParameters
internal class SomeParameters
{
internal string value1 { get; set; }
internal DateTime value2 { get; set; }
internal SomeEnum value3 { get; set; }
}
internal class SomeClass
{
internal SomeClass(SomeParameters parameters)
{ }
}
我的問題是替換構造函數的參數:在SomeClass
類我應該保持獨立的變量,並從它們分配SomeParameters還是應該用SomeParameters
類的實例替換它們?
解決方案1:
internal class SomeClass
{
private string value1;
private DateTime value2;
private SomeEnum value3;
internal SomeClass(SomeParameters parameters)
{
value1 = parameters.value1;
value2 = parameters.value2;
value3 = parameters.value3;
}
}
解決方案2:
internal class SomeClass
{
private SomeParameters _parameters;
internal SomeClass(SomeParameters parameters)
{
_parameters = parameters;
}
}
解決方案2似乎更容易,避免冗餘,但我不知道這是否是一個很好的做法。解決方案2是否意味着安全問題?
也許最簡單的解決方案是好的,我問自己太多的問題。
感謝您的反饋
您演示的方式,它看起來像'SomeClass' *爲*參數包裝對象,這使得'SomeParameters'相當多餘。 – Abion47
如果您將值保存在「SomeParameters」實例中,則應制作該實例的副本。否則,類的用戶可能稍後更改給定實例中的值(「SomeParameters」是引用類型),並且您可能不希望類中的值從外部更改。 –
@ Abion47所以我提出它不好,SomeClass做了很多東西,不是一個包裝 –