Соглашение о булевых именах: утверждение или вопрос?

1

(questionn специально написано с ошибкой: stackoverflow не разрешает слово "вопрос" в заголовке)

Рассмотрим свойство SomethingHasChanged

Это можно прочитать как выражение, SomethingHasChanged! , или вопрос, SomethingHasChanged?

Каковы соглашения (С#) для именования логических? Как заявления или как вопросы?

Задний план

Весь код клиента, на который я работаю, написан на голландском языке. На голландском языке существует небольшая разница между этими двумя формами, которые на английском языке не существуют. Поэтому нам нужно принять решение между двумя формами. Пример: ErIsIetsGewijzigd! против IsErIetsGewijzigd?

  • 2
    Дубликат вопроса CodeReview
  • 0
    IMHO SomethingHasChanged следует читать как утверждение. Если я хочу задать вопрос, я хотел бы написать: HasSomethingChanged() .
Показать ещё 2 комментария
Теги:
naming-conventions
boolean

3 ответа

2
Лучший ответ

Логическая переменная или свойство является результатом выражения, поэтому это не вопрос, а утверждение.

Если вместо этого вы задаете вопрос, для которого требуется операция, чтобы ответить на него, это должен быть метод и может быть назван таковым.

3

Многие свойства boolean начинаются с Is или Has, например:

this.IsRed = this (object) is red
this.HasChildren = this (object) has children

Ваше имя действительно не подходит для этого соглашения:

this.SomethingHasChanged = this (object) has something that has changed.

Чтобы соответствовать этому соглашению, я бы переименовал ваше свойство IsDirty или подобное.

0

Это зависит от того, хотите ли вы сообщить свое состояние чтения или определить его по запросу. Свойство bool HasChanged {get; set; } bool HasChanged {get; set; } bool HasChanged {get; set; } можно вызвать дважды, и это должно привести к тому же сохраненному значению. Однако метод bool HasChanged() сообщает, что он будет определять его для вас по требованию.

Наконец, поскольку я тоже голландский, ErIsIetsGewijzigd звучит как команда, поэтому, читая его, он должен установить свойство, то есть ErIsIetsGewijzigd(true); ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню