Любой мнемонический совет для логического? - PullRequest
3 голосов
/ 16 февраля 2009

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

Есть предложения?

1 Хорошо: Я имею в виду того, кто знает C, конечно же :)
2 Я - разработчик Java, как вы уже догадались;)

Ответы [ 11 ]

9 голосов
/ 16 февраля 2009

Мнемоника звучит так: «Сколько правды в этом?» Ноль целое число означает ноль правды. Все остальное - ненулевая правда. :)

4 голосов
/ 16 февраля 2009

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

например. в С

#define TRUE 1
#define FALSE 0

В общем, я бы в любом случае не использовал константы в коде.

Рассмотрим,

if(my_var == TRUE)

в отличие от

if(my_var == 1)

Хотя и здесь вам необходимо убедиться, что вы проверяете правильность,

if(my_var != FALSE)

поймает больше случаев.

Ура!

Christian

4 голосов
/ 16 февраля 2009

У меня есть сотрудник, у которого на стене рядом с письменным столом просто есть заметка «Это»:

False = 0
True! = 0

3 голосов
/ 16 февраля 2009

Разве вы не замечали, что выключатели питания повседневных предметов используют круг для выключения и линию для включения ?

Нет ничего сложного в том, чтобы связать их.

Выкл = круг = ноль = ложь

On = line = one = true

3 голосов
/ 16 февраля 2009

Это осложняется тем, что в оболочке (sh, bash) true равно 0, а false равно 1:

$ true
$ echo $?
0
$ false
$ echo $?
1
3 голосов
/ 16 февраля 2009

"О, нет!"
(Oh == 0)

2 голосов
/ 16 февраля 2009

Нет мнемоники - и она становится еще более сложной, если вы работаете на аппаратном уровне. Но для программистов просто задайте вопрос:

Установлен ли какой-либо бит?

Ответ является либо истинным, либо ложным, и является результатом. Только 0 (даже в целых числах со знаком) не имеет установленных битов.

-Adam

2 голосов
/ 16 февраля 2009

Помните: "ничего == ложь", "что-то == правда"

1 голос
/ 16 февраля 2009

Это зависит от языка.

  • C : ( 0 ? "never happens" : "false") и ( 1 ? "true" : "never happens")

  • Рубин , ELisp : истинны 0 и 1

  • bash (или cmd.exe ): команда true (из coreutils) завершается с кодом состояния 0, а команда false завершается с ненулевым кодом состояния

Многие современные популярные языки программирования имеют сильное наследие C, поэтому они считают 0 ложным и 1 (или любые ненулевые числа) истинными.

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

1 голос
/ 16 февраля 2009

Отобразить как On, так и Off. Я думаю, что большинство программистов будут отображать оба набора одинаково: 1 / true, оба переходят в «Вкл.», В то время как 0 / false оба переходят в «Выкл.»

...