說你有這兩種方法:OO樣式參數VS類型參數
數1:
void AddPerson(Person person)
{
// Validate person
if(person.Name != null && IsValidDate(person.BirthDate)
DB.AddPersonToDatabase(person);
}
數2:
void AddPerson(string name, DateTime birthDate)
{
Person p = new Person(name, birthDate);
DB.AddPersonToDatabase(person);
}
這兩種方法是最好的?我知道第一個更正確的OO明智,但我覺得第二個更具可讀性,並且您不必確定該對象是有效的,因爲參數確保這一點。我只是不喜歡在我將它們作爲參數傳遞的任何地方驗證對象。還有其他方法嗎?編輯: Thx爲所有答案。爲了澄清,在構造函數和IsValid方法中進行驗證當然是一種好方法,但在我的代碼中,人員的有效狀態通常取決於上下文,並且可能因方法而異。這當然可能是設計不好的標誌。
該代碼只是一個例子來描述問題。
+1 - 同樣值得注意的是,在#2中,客戶端與Person類是分離的,這在某些情況下可能有所幫助 – 2008-12-31 14:42:48