2014-05-24 54 views
0

我正在使用一個對象,該對象具有在整個程序中處理所需的多個屬性。使用對象作爲參數

是否有任何問題,在整個代碼中傳遞引用類型作爲參數?因爲方法返回類型的大部分時間都是void類型。

有什麼不對嗎?

class Test 
{ 
    prop a; 
    prop b; 
    prop c; 
} 


Test t = new Test(); 

Start(t); 

void Start(Test t) 
{ 
    t.a = 100; 
    t.b = 20; 
    StartSecondMethod(t) 
} 

StartSecondMethod(Test t) 
{ 
    ....... 
} 
+4

這個問題似乎是題外話,因爲它是關於代碼審查。 – CodeCaster

回答

1

這樣做沒有錯。你的「Test」對象是一個類,所以它是可變的。將對象實例傳遞給一組方法來處理它是完全正確的。請注意,這不適用於結構,因爲它不可變。

我有一個應用程序以相同的方式執行此操作:它通過流水線計算過程傳遞一個大的「計算」對象。例如:

Calculations myCalcs = new Calculations(); 
Engine.DoInitialization(myCalcs); 
Engine.PreCalc(myCalcs); 
Engine.Calculate(myCalcs); 
Engine.PerformChecks(myCalcs); 

if (myCalc.Valid) 
    Storage.SaveToDB(myCalcs); 
else 
    Logger.CalculationError(myCalcs); 

您的代碼看起來不錯,除了這個細節:需要設置爲publicinternal「測試」類中的字段存取。

該技術被Visitor pattern使用,其旨在使用更高的抽象級別來執行相同的事情,目標是重用性。

1

不,將您的方法作爲參考類型傳遞給void方法根本沒有錯。但是,它不會讓你的代碼非常可讀。

你可以把啓動和StartSecondMethod方法試驗類聲明的一部分,並呼籲他們這樣的:

t.Start(); 
t.StartSecondMethod();