Re[2]: if (a == true)
От: Философ Ад http://vk.com/id10256428
Дата: 11.03.25 14:10
Оценка:
Здравствуйте, yenik, Вы писали:

Y>Поэтому надо писать так: if (service.IsStarted == false).


Я по возможности пишу вот так:
if (false == service.IsStarted) // так точно нагляднее/виднее: я, если уставший, то подслеповатЪ - восклицательных знаков не вижу
Всё сказанное выше — личное мнение, если не указано обратное.
Re[2]: if (a == true)
От: Философ Ад http://vk.com/id10256428
Дата: 11.03.25 14:12
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Все проще — у меня начинающие так пытаются писать, пока я им по рукам не дам.


А зачем ты этим занимаешься?
Всё сказанное выше — личное мнение, если не указано обратное.
Re: if (a == true)
От: Философ Ад http://vk.com/id10256428
Дата: 11.03.25 14:15
Оценка:
Здравствуйте, Alekzander, Вы писали:

A>Сразу оговорюсь, что вопрос больше не про философию программирования, а про психологию программистов.


A>Когда я давным-давно впервые увидел в коде сабж, то решил, что автор издевается (особенно без йода-сравнений).


Я, кстати, пишу в йода-стайле при возможности — если не заворачивают на ревью или линтер:

if (false == a)


намного более заметно, чем с восклицательным знаком — будучи уставшим, я не вижу восклицательных знаков — похоже возраст уже, зрение садится.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: if (a == true)
От: LaptevVV Россия  
Дата: 11.03.25 16:03
Оценка: -1 :)
LVV>>Все проще — у меня начинающие так пытаются писать, пока я им по рукам не дам.
Ф>А зачем ты этим занимаешься?
Чем именно ?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: if (a == true)
От: Философ Ад http://vk.com/id10256428
Дата: 11.03.25 16:21
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>>>Все проще — у меня начинающие так пытаются писать, пока я им по рукам не дам.

Ф>>А зачем ты этим занимаешься?
LVV>Чем именно ?

Следишь за такими вещами и напрягаешь себя и других этой фигнёй?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: if (a == true)
От: LaptevVV Россия  
Дата: 11.03.25 17:46
Оценка: +1 -1 :)
LVV>>>>Все проще — у меня начинающие так пытаются писать, пока я им по рукам не дам.
Ф>>>А зачем ты этим занимаешься?
LVV>>Чем именно ?
Ф>Следишь за такими вещами и напрягаешь себя и других этой фигнёй?
Дык это же основная задача препода — постараться сделать человека из примата...
Только отвернешься — они снова на пальму лезут...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: if (a == true)
От: 777777w Россия  
Дата: 13.03.25 10:05
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Все проще — у меня начинающие так пытаются писать, пока я им по рукам не дам.

LVV>После пи*лей — сразу как-то все понимают и начинают писать нормально

Вот это правильный препод! Категорически одобряю.
Re: if (a == true)
От: Константин Б. Россия  
Дата: 14.03.25 08:32
Оценка: +1
Здравствуйте, Alekzander, Вы писали:

A>Сразу оговорюсь, что вопрос больше не про философию программирования, а про психологию программистов.


Моя теория что они просто заняты делом и не отвлекаются на синтаксический оверхед и прочую ерунду. Как в тот момент времени логичнее казалось так и написали.
Re[4]: if (a == true)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.03.25 12:20
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Alekzander, Вы писали:

A>>Это хуже йодинга: смысл перестановка меняет незначительно лишь, а инверсия страшная тут.
S>Смысл меняется, и очень-очень сильно. true обычно равно 0xFFFFFFFF.

Эээ...
присоединяюсь к вопросу — это в каких языках?
Я такое помню только в Forth и классических Бейсиках. Ну и в некоторых форматах данных (ASN.1 CER, DER требуют один байт 0xFF). У остальных почти у всех — единица. Это же у большинства процессоров, где они создают булевские значения (setxx у x86, slt(i)(u) у RISC-V, и т.п.).
Контекст ассемблера SIMD тоже есть, но он опять же особый.

S>В итоге, если в a попадает 42, то if(a == true) пройдёт мимо, а if(a != false) зайдёт внутрь. Как и if(a).


Оптимизация и правила конверсии могут это вывернуть наизнанку. Например, ==true может превратиться в !=0 на уровне битового представления. А могут и не вывернуть.

S>Так что, возможно пишет if(a == true) вовсе не идиот.

S>Может быть, a имеет тип "недоперечисления", которое организовано так, что -1 = started; 0 = stopped; 1 = starting; 2 = stopping; 16 = error. Для совместимости с совсем древним кодом, который написан для времён с двумя статусами сервиса, которые он проверял через if(!service->status).
S>А теперь нам нужен код, который убеждается, что сервис именно что запущен.

Тогда и надо писать ==1, а не ==true.

Ну, я в Питоне тоже иногда делал tri-state (None, False, True), но это была диверсия, от которой потом избавлялись при подходящем случае.

A>>Если тип не bool, они в таких случаях пишут каст плюс == true.

S>Даже если тип bool, не всегда он сформирован честным образом из констант true, false, и булевых операций. Даже в дотнете я налетал (правда, из-за бага в моём же unsafe коде) на то, что булевая логика на SIMD дала не true, а non-false результат. В итоге, код с if(a) прекрасно работал, а вот тесты, которые сравнивали вычисленный массив булеанов с референс-значениями, фейлились.

Ну на unsafe это вы тогда сами себе учудили.

S>С другой стороны, это недостаточно каргокультно.

S>По классике, нужно писать вот так:
S>
S>if(true == service.IsStarted())
S>


Считаю, шутка удалась
The God is real, unless declared integer.
Re[5]: if (a == true)
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.03.25 16:02
Оценка:
Здравствуйте, netch80, Вы писали:

N>Эээ...

N>присоединяюсь к вопросу — это в каких языках?
АФАИК, во всех языках CLR. Но это, собственно говоря, неважно. Если в конкретном языке/платформе true == 0x1, то нижеследующая цитата всё равно верна:

S>>В итоге, если в a попадает 42, то if(a == true) пройдёт мимо, а if(a != false) зайдёт внутрь. Как и if(a).

N>Оптимизация и правила конверсии могут это вывернуть наизнанку. Например, ==true может превратиться в !=0 на уровне битового представления. А могут и не вывернуть.
Это сильно зависит от деталей спецификации. В CLR чётко написано, что истинным считается любое ненулевое значение. И даже сравнение с компайл-тайм константой true таки даёт true.
А вот сравнение рантайм-значений может не удастся: https://dotnetfiddle.net/3h20pu

N>Тогда и надо писать ==1, а не ==true.

+1
N>Ну, я в Питоне тоже иногда делал tri-state (None, False, True), но это была диверсия, от которой потом избавлялись при подходящем случае.


N>Ну на unsafe это вы тогда сами себе учудили.

Но был удивлён.
N>Считаю, шутка удалась
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: if (a == true)
От: B0FEE664  
Дата: 25.03.25 18:29
Оценка: :)
Здравствуйте, vsb, Вы писали:

vsb>Писать if (isStarted) либо же if (isStarted == true) — вообще разницы не вижу.


void fff(auto isStarted)
{
  if (isStarted == true)
    std::cout << "ok";
  else
    std::cout << "oups";
}

fff(2);
И каждый день — без права на ошибку...
Re: if (a == true)
От: B0FEE664  
Дата: 25.03.25 18:48
Оценка: -1 :)
Здравствуйте, Alekzander, Вы писали:

A>Сразу оговорюсь, что вопрос больше не про философию программирования, а про психологию программистов.

...
A>Так вот, у меня появилась гипотеза, что те, кто пишет if (service.IsStarted == true), просто слышали звон. Останавливаются на половине, пытаются изображать строгость, при этом не расписывая состояния для каждого кейса.

Если про психологию, то это просто от лени. Никто не хочет писать "лишнего". К тому же, думать — это очень энергозатратно и чаще, чем 2 раза в день практически невозможно.
И каждый день — без права на ошибку...
Re[2]: if (a == true)
От: ononim  
Дата: 29.03.25 17:33
Оценка:
Y>Мои коллеги считают, что if (!service.IsStarted) — это нечитабельно, восклицательный знак не видно красными глазками.
так пускай три восклицательных знака ставят, чтоб заметно было
Как много веселых ребят, и все делают велосипед...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.