Подтвердить что ты не робот

Использует ли "is" для обозначения ошибочной практики логических переменных?

Является ли название Booleans, которое начинается с "плохой практики" сейчас? Мой менеджер считает, что "isAnything" устарел и плохая практика. Это правда?

myManager.isLame ? correct() : incorrect();
4b9b3361

Ответ 1

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

Я думаю, что согласованность и все в данной команде, использующей те же стандарты/стили, - это важно помнить.

Ответ 2

Я бы не использовал здесь жесткие и быстрые правила. Хотя я считаю, что префикс, например "Is", полезен при определении логического свойства, существует множество случаев, когда "Is" не лучший выбор.

  • Car.HasFlatTyre vs Car.IsFlatTyre
  • Cars.AreAllRed vs Cars.IsAllRed
  • и т.д...

Принципы именования MSDN включают следующие соответствующие рекомендации.

Введите логические свойства с утвердительной фразой (вместо CanSeek CantSeek). При желании вы также можете префикс Boolean properties с помощью Is, Can или Has, но только там, где он добавляет значение.

Ответ 3

Это вопрос стиля, и я видел его много раз (и делаю это сам на многих языках).

Ответ 4

isLame() очень распространен, и я считаю, что он не хромой. В Java это часть спецификации JavaBeans и, следовательно, довольно укомплектованная практика.

Ответ 5

Стилистически, мой голос будет для hasValue или isNullOrEmpty. Однако использование умных ярлыков или однострочных утверждений, если это так, является повсеместно плохим. Это значительно снижает читаемость кода, и на большинстве языков это не приведет к увеличению производительности.

Ответ 6

было бы лучше, если бы вы создали логическую переменную с понятным именем

boolean lame;

и сделать способ проверить его значение

isLame(){
  return lame;
}

Как правило, лучший подход к вызову метода при прямом доступе к переменной.

Ответ 7

Следуйте языковому документированному соглашению. Если нет соглашения:

Опустить информацию о типе в переменной имен вообще.

Это включает в себя is для булевых.

boss.lame? limp(): sprint()

Для языков с сильной типизацией информация избыточна.

Для языков без сильной печати информация по-прежнему избыточна, так как IDE и все доступные инструменты теперь помогают печатать без необходимости свертывания имен.

is глагол. is_lame() должен быть методом доступа, который возвращает логическое значение.