在我目前的項目中,我需要大量的數據,特別是深入瞭解什麼是副本和什麼是參考 - 實施大量的深度克隆。謝天謝地,我的很多數據都包含在簡單的結構中,所以我可以將它們分配或傳遞給參數,並確保它們不相互引用。假設一個類型是一個結構是基於邏輯的一種不好的做法嗎?
但是,我意識到這樣做的代碼是基於這些類型是struct的假設,並且如果有人在某段時間將其類型更改爲類,他們可能不會注意到錯誤當他們這樣做的時候,這將是一個難以調試的地方。一般來說,我認爲代碼的正確性是基於在同一個文件中沒有明確說明是嗅覺的假設,尤其是當這個假設可以在不立即破壞構建的情況下被改變的情況下。所以,這種情況真的給我一個難聞的氣味。
我在做什麼真的是一個不好的做法?你是否遇到過我在真實代碼庫中描述過的任何問題,或者我是在想象什麼?如果你有,那麼將事情變得更加明確的好方法是什麼?
下面是我在說什麼(這是我的實際代碼,所有的名稱改變和其他功能剝離)的例子:
public class Example
{
public readonly DataOfType;
public readonly DataOfOtherType;
public Example(Type _DataOfType, OtherType _DataOfOtherType)
{
DataOfType = _DataOfType;
DataOfOtherType = _DataOfOtherType;
}
public Example DeepClone()
{
return new Example(DataOfType, DataOfOtherType);
}
}
的DeepClone
方法是正確的,因爲Type
是枚舉和OtherType
是一個結構,但你永遠不會知道它從這個代碼。
您可以發佈一段代碼,說明您所描述的內容。謝謝 – Christos
@Christos更新了問題 –