2011-01-14 17 views
6

Generalnie, jeśli istnieje właściwość, która pobiera/ustawia wartość dla państwa, używam „jest”, jak:Dobre wytyczne dotyczące nazywania właściwości bool

Visibility: 
.IsVisible 

Ale dla właściwości, które ustawia/pobiera działań, co jest najlepiej używać? Jak:

Casting shadows: 
.CastShadows 

powinienem używać:

.DoesCastShadows 

Czy istnieje lepsza alternatywa?

+3

'.CastsShadows' może? –

Odpowiedz

11

Znaczna część biblioteki używa czegoś, co byłoby jak .IsShadowCastingEnabled. Na przykład UIElement definiuje IsInputMethodEnabled i IsHitTestVisible.

Zaletą jest to, że IsXXX wyraźnie pokazuje, że jest to właściwość boolowska.

+0

Hmmm, nie zdawałem sobie z tego sprawy. +1 – BoltClock

+0

Dzięki, teraz jestem podzielony. Mogę więc pójść z twoją odpowiedzią. Btw, kiedy powiedziałeś wiele z biblioteki, masz na myśli BCL lub WPF lub jakiekolwiek inne w sieci? –

+1

@ Joan: Istnieją pewne różnice - częściowo w zależności od wieku interfejsu API. Na przykład WCF często pozostawia "Is" wyłączone, ale nadal wykorzystuje resztę podstawowej koncepcji ... –

5

Myślę, że zadziała CastsShadows. Powiadomienie s po Cast. Jest to równoznaczne z Is tym, że oba zaczynają się od pojedynczych czasowników (i Does brzmi raczej tandetnie).

+0

Dzięki, to ma sens. –

1

Moim preferencją jest użycie "Is" dla właściwości tylko do odczytu; Prawdopodobnie użyłbym czegoś w rodzaju "EnableShadows" jako własności. Nie od razu może być oczywiste, że jest to właściwość, a nie metoda, ale podczas czytania kodu powinno być oczywiste, a podczas pisania kodu Intellisense powinien wskazywać, że jest to właściwość. Ponadto, jeśli ktoś spróbuje użyć EnableShadows jako metody, kompilator powinien złożyć skargę.

+0

Dzięki, faktycznie używam IsXXX, nawet jeśli jest to odczyt/zapis. –

+0

Niektóre właściwości zachowują się jak pola, które powodują, że rzeczy dzieją się podczas pisania, ale zazwyczaj czytają ostatnią rzecz napisaną. Inne odzwierciedlają pewną cechę obiektu, który będzie kontrolowany przez coś innego niż zapisywanie do nieruchomości. Czy masz jakąś konwencję nazewnictwa, aby je odróżnić? – supercat

+0

Czy masz na myśli to, czy coś jest obliczane w locie, czy zwracane przez pole wsparcia w porównaniu z właściwościami, które nie mają pól wsparcia (zdefiniowanych przez programistę)? W takim przypadku nie, nadal nie używam różnych nazw. Mam właściwości takie jak vector3.Length, który jest obliczany w locie. –

Powiązane problemy