Использование «is» для именования булевых переменных - плохая практика? - PullRequest
31 голосов
/ 05 августа 2011

Является ли присвоение логических значений, начинающихся с «это», плохой практикой сейчас? Мой менеджер считает, что «isAnything» является устаревшей и плохой практикой. Это правда?

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

Ответы [ 7 ]

23 голосов
/ 05 августа 2011

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

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

18 голосов
/ 05 августа 2011

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

  • Car.HasFlatTyre против Car.IsFlatTyre
  • Cars.AreAllRed против Cars.IsAllRed
  • и т. Д. *

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

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

3 голосов
/ 05 августа 2011

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

2 голосов
/ 05 августа 2011

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

1 голос
/ 11 сентября 2013

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

0 голосов
/ 04 декабря 2018

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

Информация о типе пропуска в именовании переменных.

Включает is для логических значений.

boss.lame ? limp() : sprint()

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

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

0 голосов
/ 04 августа 2016

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

boolean lame;

и сделайте метод для проверки его значения

isLame(){
  return lame;
}

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

...