2013-02-03 73 views
2

在面向對象的設計中,以下哪項更好?面向對象設計:使用方法參數vs屬性

與方法等發送參數:

obj.InsertRecord("raed","1987") 

或使用類似的屬性:

obj.name= "raed" 
obj.year= "1987" 
obj.InsertRecord() 
+1

問題是哪個更適合這種情況。前者因爲只有一個屬性被設置,但後者都是非空字段,後者可能會失敗。 –

+1

如果這些是屬性,它們應該遵循[C#命名約定](http://msdn.microsoft.com/en-us/library/x2dbyw72(v = vs.71).aspx) –

回答

7

如果您發送的參數,你必須每次改變InsertRecord()簽名obj的類簽名更改(例如,如果你添加一個description屬性) ,因爲你會想保存這些新的屬性。

此外,對象本身不應該爲保存自己而煩惱。這不是對象的責任。所以,像這樣的事情是最有前途的:

ObjectStorage.InsertRecord(obj); 
1

面向對象程序設計,這是優選的:obj.InsertRecord("raed", "1987");

面向組件編程,後者是優選的: 是這樣的:

obj.name = "raed"; 
obj.year = "1987"; 
obj.InsertRecord(); 

順便說一句,這是屬於programmers.stackexchange