2009-06-10 81 views
0

可能重複:
Properties vs Methods屬性或方法?

什麼時候最好使用一個屬性或方法?

我有一個類是一個記錄器。當我創建這個類時,我傳入一個文件名。

我的日誌文件名相當簡單,基本上它只是獲取應用程序路徑,然後將其與myapp.log結合使用。

現在,而不是在我的方法中的日誌文件名行,我想創建一個新的方法來獲取此。

所以我的問題是,因爲它相當簡單,創建一個屬性是一個好主意,而不是創建一個方法,因爲沒有參數。


重複Properties vs Methods

回答

1

屬性可用於返回簡單值。在提取值時可能會導致任何類型的性能下降,因此應始終使用方法。但是,簡單的線性操作在屬性上可以很好。

0

我一定會去的財產。如果你正在做一些複雜的或計算上或時間密集的事情,那麼你會去方法路線。屬性可以隱藏正在發生複雜操作的事實,所以我喜歡爲快速操作保留屬性以及實際描述對象屬性的屬性。簡單地說:方法「做」某些事物,屬性描述。

+1

我不同意。我經常使用屬性來表示不一定是私人領域的價值觀。我只在使用某種方法時使用方法,而不僅僅是獲取一些數據。 – RCIX 2009-06-10 06:42:34

0

當你想使用它像一個變量,你應該去一個屬性。當你想清楚這是一種方法時,你應該使用一種方法。

作爲一個屬性是一種方法,它取決於你想在這裏溝通的語義/設計。

0

屬性應該用於包裝實例變量或提供簡單的計算字段。我使用的經驗法則是,如果還有其他更輕的處理使它成爲一種方法。

1

問問你自己,它是你班上的一個方面(它有什麼)與你班上的行爲(它的作用)。

就你而言,我建議一個屬性是要走的路。

0

如果你沒有做任何重要的事情,請使用合格證書。
在你的情況下,一個只讀屬性(只有)應該是好的。

當您正在做的事情不是返回對內部成員的引用時,方法纔有意義。

4

屬性通常用於存儲對象的狀態。方法通常用於對對象執行操作或返回結果。屬性提供了getter和setter,並且可以有不同的範圍(至少在.NET 2.0中)。使用屬性vs方法進行序列化或克隆還有一些優點,UI控件通過反射查找屬性以顯示值。

0

屬性是一種設計氣味。

他們有時在圖書館上課時,筆者無法知道數據將如何使用,但必須簡單地輸出被放在相同的值(例如KeyValuePair類的KeyValue屬性。)

合適

恕我直言,一些在庫類中使用屬​​性是不好的。例如分配給DOM元素的InnerHTML屬性觸發解析。這應該可能是一種方法。

但在大多數應用程序類,你知道的價值究竟是如何被使用的,它是不是類的責任提醒你什麼珍惜你投入了,只有用數據來完成其工作。 Messages should exercise capabilities, not request information

如果你想要的值是通過類來計算的(或者如果類是一個工廠,並且這個值是一個新創建的對象),使用一種方法可以更清楚地說明涉及到計算。

如果要設置日誌文件名,然後還有打開文件(這大概可以拋出一個異常?)這也許應該是一個方法的副作用。

如果文件名就是日誌信息的一部分,你並不需要的屬性爲getter,只是一個二傳手。但是,您將擁有隻寫屬性。有些人覺得這些令人困惑,所以我避開它們。

所以我肯定會去的方法。

0

重複問題的答案是正確的。 MSDN有一篇非常好的文章,介紹這些差異以及何時應該用於其他應用。 http://msdn.microsoft.com/en-us/library/ms229054.aspx

在我來說,我相信使用該屬性將是正確的,因爲它只是返回的exe +文件名相結合的道路。

但是,如果我決定通過文件名來得到它與exe文件路徑結合起來,那麼我會使用的方法。