2011-01-14 2 views
6

Вообще, если есть свойство, которое получает/устанавливает значение для государства, я использую «Is», как:Хорошие рекомендации по именованию свойства BOOL

Visibility: 
.IsVisible 

Но для свойств, которые получают/устанавливают действия, что лучше всего использовать? Как:

Casting shadows: 
.CastShadows 

Должен ли я использовать:

.DoesCastShadows 

Есть ли лучшая альтернатива?

+3

'.CastsShadows' может быть? –

ответ

11

Большая часть библиотеки использует что-то, что было бы как .IsShadowCastingEnabled.

Например, UIElement определяет IsInputMethodEnabled и IsHitTestVisible.

Приятная вещь об этом заключается в том, что IsXXX делает это очень ясно, что это логическое свойство.

+0

Хммм, не понял этого. +1 – BoltClock

+0

Спасибо, теперь я раскололся. Тогда я могу пойти с твоим ответом. Кстати, когда вы много говорили о библиотеке, вы имеете в виду BCL или WPF или любой другой в сети? –

+1

@Joan: Есть некоторые отличия - отчасти в зависимости от возраста API. Например, WCF часто оставляет «Is» выключен, но все еще использует остальную базовую концепцию ... –

5

Я думаю, CastsShadows будет работать. Уведомление s после Cast. Параллельно с Is в том, что оба начинаются с сингулярных глаголов (и Does звучат довольно липкими).

+0

Спасибо, это имеет смысл. –

1

Мое предпочтение заключается в использовании «Is» для свойств только для чтения; Вероятно, я использовал бы свойство «EnableShadows» как свойство. Не может быть сразу видно, что это свойство, а не метод, но при чтении кода это должно быть очевидно, а при написании кода Intellisense должно указывать, что это свойство. Кроме того, если вы пытаетесь использовать EnableShadows в качестве метода, компилятор должен жаловаться.

+0

Спасибо, я на самом деле использую IsXXX, даже если он читается/записывается. –

+0

Некоторые свойства ведут себя как поля, которые заставляют вещи произойти, когда они написаны, но обычно прочитают последнюю написанную вещь. Другие отражают некоторый атрибут объекта, который будет контролироваться чем-то другим, кроме записи в свойство. У вас есть какое-либо соглашение об именах, чтобы отличить их? – supercat

+0

Вы имеете в виду, рассчитывается ли что-то на лету vs, возвращенное полем поддержки, и свойствам, которые не имеют полей поддержки (определенных программистом)? В этом случае я все еще не использую разные имена. У меня есть свойства, такие как vector3.Length, которые вычисляются на лету. –

Смежные вопросы