Какова ваша предпочтительная логическая пара: 1/0 Да / Нет Верно / Неверно? - PullRequest
3 голосов
/ 23 января 2009
  1. При работе с MySQL я обычно использую тип BOOLEAN, который эквивалентен TINYINT (1) или 1/0
  2. В большинстве языков, с которыми я работаю, предпочтение отдается true / false
  3. При отображении форм иногда имеет смысл "Да / Нет"

Ответы [ 7 ]

25 голосов
/ 23 января 2009
enum Bool 
{ 
    True, 
    False, 
    FileNotFound 
};

http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx

8 голосов
/ 23 января 2009

В коде: true / false.

В пользовательском интерфейсе: Да / Нет или OK / Отмена

6 голосов
/ 23 января 2009

true и false имеют для меня гораздо больше смысла в коде - отчасти благодаря знакомству, я уверен. Я подозреваю, что привыкну к yes и no довольно быстро. 1 и 0 действительно не работает для меня, хотя.

Рассмотрим выражение

age == 5

Это тест на правду. Это значение age 5? Да, это правда. И «да» и «нет» было бы хорошо для меня, но идея, что ответ на вопрос «Является ли значение age 5?» «1» кажется мне довольно нелогичным. То, что это типичное двоичное представление истины, не означает, что оно полезно в более высокой абстракции.

5 голосов
/ 23 января 2009

Вот правила, по которым я живу ...

Правило № 1

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

Правило № 2

Взаимодействуйте с пользователями вашего программного обеспечения, используя их предпочитаемый язык и идиомы, то есть, да / нет, вопросы должны предлагать Да / Нет (или, возможно, альтернативу Нет, например, Отмена).

Правило № 3

Неопределенность должна быть выражена в терминах охвата, то есть «это зависит», за которым последует вопрос «от чего?». Я знаю разработчиков, которые отвечают на этот вопрос, копируя и вставляя практически все зависимости, которые могут им понадобиться, в каждый файл кода проекта в качестве выражения «использование». Это просто небрежно, и, пожалуйста, потрудитесь алфавитизировать или хотя бы сгруппировать пространства имен вместе.

Когда булла просто недостаточно

Кстати, интересный поворот, доступный в C #, это Nullable;

Вы можете написать

Nullable<bool> RespondToIritatingQuestion()
{
    return new Nullable<bool>();

}

OR

bool? RespondToIritatingQuestionWithSytle()
{
    return new bool?();

}

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

bool? answer = RespondToIritatingQuestionWithStyle();

if (answer.HasValue)
    Trace.WriteLine("The bloke responded with " + answer.Value.ToString());
else
    Trace.WriteLine("The bloke responded with 'depends'.");
5 голосов
/ 23 января 2009

Что легче читать?

while(true) {}
while(yes) {}
while(1) {}

Я буду придерживаться истины в большинстве случаев.

2 голосов
/ 23 января 2009

1 или 0 для SQL. У SQL есть логический тип по причине. Кроме того, в очень больших базах данных это может повлиять на производительность.

0 голосов
/ 23 января 2009

Я использую логические значения для полей true / false в базах данных. Некоторые люди используют ENUM('true', 'false'), но это не мое предпочтение. Для языков программирования я всегда использую true / false, даже если будет установлено значение 0 или 1. И если для формы требуется «да» / «нет», я все еще использую логические значения для представления значений, но отображаю их как более логичные строки.

...