Какая логическая пара вам больше нравится: 1/0 Да/Нет Истина/Ложь?

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

person dittonamed    schedule 22.01.2009    source источник


Ответы (7)


enum Bool 
{ 
    True, 
    False, 
    FileNotFound 
};

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

person Evgeny    schedule 22.01.2009

В коде: правда/ложь.

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

person Ed S.    schedule 22.01.2009
comment
Всегда проверяйте вопрос, который вы задаете, прежде чем использовать Да/Нет или OK/Отмена. Вы хотите отменить операцию? -- ОК/Отмена - person Chris Cudmore; 12.02.2009

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

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

age == 5

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

person Jon Skeet    schedule 22.01.2009
comment
Да, я забыл упомянуть об абстракции. Кстати, хороший подкаст о .NET рулит :) - person Ed S.; 23.01.2009

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

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

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

person Chris Cudmore    schedule 22.01.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'.");
person EnocNRoll - AnandaGopal Pardue    schedule 22.01.2009
comment
Хромой, для протокола, я не голосовал против этого вопроса, так что, серьезно, тот, кто проголосовал за меня, должен пересмотреть свое решение. - person EnocNRoll - AnandaGopal Pardue; 23.01.2009
comment
Разве это не то, что в основном означает (!answer.HasValue)? - person EnocNRoll - AnandaGopal Pardue; 12.02.2009

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

person Community    schedule 22.01.2009

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

person TJ L    schedule 22.01.2009