2011-05-25 12 views
11

在與對等方的討論中,提出了我們應該考慮對所有類級變量(包括私有類)使用自動屬性。對於編程標準,使用私有汽車屬性而不是簡單變量

所以除了公共財產,像這樣:

public int MyProperty1 { get; set; } 

我們的私有類級變量應該是這樣的:

private int MyProperty2 { get; set; } 

相反的:

private int _myProperty2; 

我關於爲什麼有人會想這樣做,但我不能決定是否我不願意接受這個是因爲我自己的內部洗腦與我如何編寫我的代碼到我用了10年的相同編程標準和命名約定或因爲我以前從未見過(出於某種原因)。

我意識到這是額外的代碼鍵入,但說實話,當使用自動屬性,我不認爲我曾經輸入過它由於'道具'和'propg'片段,所以它會是設置一個新的代碼片段來創建一個私有的自動屬性非常簡單,所以額外的代碼不會打擾我太多,因爲我從來不必輸入它。

除了可能只是我的潛意識的美學之外,是否有任何問題可能因使用完全私人的汽車性能而產生?有沒有很好的理由去做或不去做?我在我的日子裏看到過很多關於stackoverflow,codeplex,codeproject等的代碼,而且我從來沒有見過任何人使用這個標準....是有原因的嗎?

+0

線去,最好保留你的東西,它通過查看代碼有助於區分什麼是私有的,什麼是公共的。 – MBen 2011-05-25 14:01:23

+0

[內部使用屬性有什麼好處?](http://stackoverflow.com/questions/2884715/what-are-the-benefits-of-using-properties-internally) – nawfal 2013-06-03 17:51:44

回答

7

這並沒有太大意義。

我能想到的「好處」:

  • 以後可以添加邏輯的getter和/或setter,並確保它總是通過

但坦率地說你的類不應該變得如此之大,這是有用的。

「有沒有問題」?

您的屬性將不會用作參數refout參數。

+0

,但稍後添加邏輯需要創建私人成員以支持財產...並且您實際上不能保證其他代碼不會直接訪問該成員 – 2011-05-25 14:13:22

+0

@Robert :true,但是在添加您知道的邏輯時,現有代碼將正確使用它。就這樣。 – 2011-05-25 14:17:55

+1

現有的代碼,是的。未來的代碼,沒有。 – 2011-05-25 14:44:32

9

在我看來,私人汽車物業是毫無意義的。私人汽車財產爲普通的汽車提供了什麼價值?

(當自動屬性只是部分私有 - 例如,公共/受​​保護的獲得者與私人設置者 - 或者當您使用私有非自動屬性使您可以包裝其他代碼圍繞着吸氣劑/吸氣劑)。

3

這對於私人醫生和公衆來說並不那麼有用。

假設你把你的自動私有財產,後來建立了一些邏輯進去(能夠做,沒有任何突破是自動道具的整點)...

這就要求你創建一個私有用於包裝物業的背襯成員。

所以,現在你有兩種不同的私人方式(成員和財產)做同樣的事情,雖然有隱藏的副作用(財產),你現在也有問題,確保沒有其他方法在課堂上直接訪問該成員。

最終比從一開始只使用私人會員更令人頭疼。

+0

如果我可以接受更多除了一個答案,我也會接受這個答案。我認爲這兩個答案一起提供了一些很好的推理來避免這種行爲。 – Biggert 2011-05-26 21:12:15

2

此策略將爲您提供的機會將未來的更改放入以前自動生成的私有屬性中,而不會影響獲取或設置私有屬性的任何其他代碼。我個人並沒有使用過這麼多,但在可能發生處理變化的情況下,這可能是有益的。它還將代碼標準化,以便字段總是通過屬性訪問。沒有真正的缺點,但它在大多數情況下也沒有多大的好處。我認爲在大多數情況下,風格確實是最大的驅動力。

+0

對公共財產有意義,但不適用於私人財產 - 請參閱我的回答 – 2011-05-25 14:13:46

0

在與對等的討論,這是 長大,我們應該考慮 所有類 級變量使用自動屬性...包括私人 的。

  1. 這會不會是有用的,如果你沒有任何邏輯在屬性中檢索並返回值來寫。
  2. 除了1點,你只讀屬性 這樣你就可以直接與

public int MyProperty1 { get; set; }

此外,它從設計的角度來看降低你的代碼,並迅速實施