Имя переменной для 2-значной переменной, переданной как логическое значение? - PullRequest
1 голос
/ 19 марта 2011

Как назвать переменную, которая является логическим значением, но может иметь 2 значащих значения из N?

Пример: x может иметь значения «красный» или «синий».

Называть его bRed или isRed имеет смысл, если он имеет значение true, но не передает никакой информации о «ложном» случае.

ВЫ можете реализовать его как int или, если вы придирчивы, как enum. Но это означает больше строк кода для объявления перечисления и т. Д.

Я думал о "redOrBlue", но логически говоря, значение всегда истинно :)

Что вы думаете о "redNotBlue"? Есть идеи получше?

Ответы [ 5 ]

7 голосов
/ 19 марта 2011

В этом случае вам, вероятно, следует использовать enum.

enum EntityColors
{
  blue,
  red
};
3 голосов
/ 19 марта 2011

Просто используйте enum в этом случае, это наиболее выразительно:

public enum ColorValue { Red, Blue };
2 голосов
/ 19 марта 2011

Больше строк кода еще не повредило разработчику.Плохо типизированная и именованная переменная сделала.Идите и используйте тип перечисления и используйте логическое значение только там, где это имеет смысл - т.е. да / нет, логика истина / ложь.

1 голос
/ 19 марта 2011

Может быть, вы хотите решить другую проблему.

Например, у вас есть функция печати

void print(string text, bool red) {...}

Красные - важные записи, все остальные - синие. Почему бы не изменить имя переменной на более значимое

void print(string text, bool isImportant) {...} 

Это сделает API более понятным, и как только вы измените свой важный цвет на оранжевый, вам не придется менять имя переменной.

0 голосов
/ 19 марта 2011

Это, безусловно, должно быть определено как enum.

Ваш вопрос: «Как назвать переменную, которая является логическим значением, но может иметь 2 значащих значения из N? Пример: x может иметь значения» red"или" синий ".

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

Реализация в виде enum - это больше строк кода, но, вероятно, она будет более расширяемой и более понятной, поскольку ее намерения будут понятны будущим разработчикам, использующим ваш код, и поэтомустоит (незначительная) стоимость реализации.

...