2008-09-25 34 views
3

現在這是.NET,但我相信委託人應適用於所有OOP語言,簡化我把.NET爲例:構造函數變量是否應直接傳遞給私有字段或屬性?

R·通常創造者構造和傳遞進來的變量的私人領域,這對我來說mi傾向於將它傳遞給Property。

任何意見如何不同和什麼是最好的做法呢?

+1

您可能想要改寫中段;這不是合理的英文,我無法做出正面或反面的評論。 – 2008-09-25 05:05:28

回答

5

只要它們不是虛擬/重寫,使用屬性就可以。屬性本質上是方法,你不應該在構造函數中調用虛擬方法,因爲適當的類型可能還沒有被構造。微軟已經列出了他們自己的set of guidelines,只需向下滾動到底部即可查看說明問題的相關指導和代碼片段(他們使用方法說明了它,但正如我提到的,.NET屬性本質上是特殊方法)。

3

通過屬性設置器傳遞參數允許您只在一個地方保留任何驗證代碼。

3

我會建議將它發送到屬性,而不是直接到私人領域,雖然您的實際執行將決定確切的條件。例如,有時會在使用Property時觸發事件,並且您不希望在構造函數中觸發這些事件。或者也許你想要繞過屬性邏輯出於某種其他原因。

2

請小心使用屬性設置器。你可能在setter中有代碼,這可能會導致意想不到的副作用。

1

我操縱構造函數中的字段。字段實際上代表了對象的固有狀態,構造函數的作用是初始化這個內部狀態。屬性就在這裏用於封裝目的,並且是對象狀態的公共接口的一部分。

在設置對象的內部狀態之前,您應用於構造函數參數或屬性輸入值的轉換邏輯可能會非常不同。無論如何,如果是這樣,我曾經使用從屬性設置器和構造器中調用的顯式變換方法,而不是直接在屬性設置器上鍊接構造器。

如果根本沒有邏輯,我看不出爲什麼你想在構造函數中使用屬性setter。

相關問題