Re[2]: if (a == true)
От: Alekzander  
Дата: 03.09.24 21:14
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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

LVV>Эт ты глубоко копнул.
LVV>Все проще — у меня начинающие так пытаются писать, пока я им по рукам не дам.
LVV>После пи*лей — сразу как-то все понимают и начинают писать нормально

Пи*лей ведь можно не только дать, но и получить ))

Я имею в виду, что они скажут: "Это у нас нормально". И придётся копать и аргументировать.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Re[3]: if (a == true)
От: LaptevVV Россия  
Дата: 04.09.24 02:56
Оценка:
LVV>>Все проще — у меня начинающие так пытаются писать, пока я им по рукам не дам.
LVV>>После пи*лей — сразу как-то все понимают и начинают писать нормально
A>Пи*лей ведь можно не только дать, но и получить ))
Ну, не от студентов же
A>Я имею в виду, что они скажут: "Это у нас нормально". И придётся копать и аргументировать.
Студенты не скажут.
Тут же как в шахматах.
Начинающих учат: конь на краю доски — очень плохо.
И аргументируют вполне разумно — ходов мало, стоит как пень, ничего не делает
Но гроссмейстеры играют на край конем, когда надо.

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

В конторе это может быть было сделано когда-то таким же джуном.
Или для каких-то джунов. Это надо спрашивать у них.


Еще очень часто встречается у начинающих:
if(логическое выражение) return true; else return false;
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: if (a == true)
От: Alekzander  
Дата: 04.09.24 10:47
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Начинающих учат: конь на краю доски — очень плохо.

LVV>И аргументируют вполне разумно — ходов мало, стоит как пень, ничего не делает

Ну вот видишь, аргументируют же. А не говорят: "Я гроссмейстер — ты дурак".

LVV>Студенты не скажут.


Это смотря какой студент попадётся.

У меня в третьем классе был физрук, телосложением напоминавший первую советскую атомную бомбу РДС-1. Как-то он начал докапываться до чистоты прыжка через снаряд, на что я ему сразу сказал: "Так покажите, как надо". Если бы мне на вопрос, почему надо (или не надо) писать таким-то образом, ответили: "Потому что потому", я бы для начала поинтересовался, где работал гроссмейстер и какими проектами он славен. Не для того, чтобы ему поверить на слово (на слово верить нельзя никому), а просто чтобы понять, надо ли вообще принимать его во внимание.

Кстати, именно поэтому я программированию пошёл учиться на предприятие, где пилили кем-то реально используемые системы, а в универ только в сессии приходил.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Re[3]: if (a == true)
От: IT Россия linq2db.com
Дата: 04.09.24 21:10
Оценка: +1
Здравствуйте, Alekzander, Вы писали:

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

K>>это не про nullable?
A>Нет, и не про operator bool.

А как ты узнаешь глядя на код, что это не оно? Наверняка, первое, что подумаешь — "Ааааа! Опять очередной говнокодер-извращенец!".
Или тут же пойдёшь определение переменной проверять?

Мне лично такая хрень вообще по барабану. В зависимости от обстоятельств могу написать и так и так. Например:

if (a == true) ... // a is bool
if (b == true) ... // b is bool?


вместо

if (a) ... // a is bool
if (b == true) ... // b is bool?


А если кто-то решит такое покритиковать, то минимум заслужит покручивание пальцем у виска.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: if (a == true)
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 04.09.24 21:40
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>По классике, нужно писать вот так:

S>
S>if(true == service.IsStarted())
S>


А современный C# подарил нам прекрасный способ
if (service.IsStarted is true) //хотя наверное service.Started выглядело бы красивее
Re[4]: if (a == true)
От: Alekzander  
Дата: 05.09.24 12:52
Оценка:
Здравствуйте, IT, Вы писали:

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

K>>>это не про nullable?
A>>Нет, и не про operator bool.

IT>А как ты узнаешь глядя на код, что это не оно?

IT>Или тут же пойдёшь определение переменной проверять?

IT>Мне лично такая хрень вообще по барабану. В зависимости от обстоятельств могу написать и так и так. Например:


Мне лично nullable bool кажется опасной штукой, и я не поленюсь расписать .has_value() и .value() (даже не operator *). (Речь в данном случае про std::optional).

Как узнаю, что это оно — да просто таких отважных программистов, которые не боятся nullable bool, давно не попадалось. Всех знакомых сивок уже укатали крутые горки.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Отредактировано 05.09.2024 16:50 Alekzander . Предыдущая версия .
Re[5]: if (a == true)
От: IT Россия linq2db.com
Дата: 05.09.24 17:52
Оценка: +2
Здравствуйте, Alekzander, Вы писали:

A>Мне лично nullable bool кажется опасной штукой, и я не поленюсь расписать .has_value() и .value() (даже не operator *). (Речь в данном случае про std::optional).


Вот опять началось. Кажется/не кажется. Всё зависит. Если надо, то пусть будет nullable. Не вижу особых проблем. Не удобно — да. Прям вот опасно — да с чего?

A>Как узнаю, что это оно — да просто таких отважных программистов, которые не боятся nullable bool, давно не попадалось. Всех знакомых сивок уже укатали крутые горки.


Я тебя умоляю... Вы в реальном мире живёте или где? Обычная ситуация — дремучая база данных с NULL BIT полями. Генерируем модель данных — получаем кучу bool?.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: if (a == true)
От: Alekzander  
Дата: 05.09.24 18:47
Оценка:
Здравствуйте, IT, Вы писали:

A>>Мне лично nullable bool кажется опасной штукой, и я не поленюсь расписать .has_value() и .value() (даже не operator *). (Речь в данном случае про std::optional).


IT>Вот опять началось. Кажется/не кажется.


Ты написал: "Мне лично", и я в тон ответил: "Мне лично". Если и началось, то не с меня.

A>>Как узнаю, что это оно — да просто таких отважных программистов, которые не боятся nullable bool, давно не попадалось. Всех знакомых сивок уже укатали крутые горки.


IT>Я тебя умоляю... Вы в реальном мире живёте или где? Обычная ситуация — дремучая база данных с NULL BIT полями. Генерируем модель данных — получаем кучу bool?.


Меня бесполезно умолять, реальный мир от этого не изменится. Я много где работал, и везде, абсолютно везде, где люди использовали плюсы и до появления std::optional (C++17) писали свой nullable из говна и палок, они НИКОГДА не делали ни operator T, ни сравнения. Чистые .has_value()/.value().

Я считал (и считаю) это экстремизмом, и эта та причина, по которой я не люблю современную культуру C++ (даже странно, что сравнения с T там всё-таки реализовали), но даже я бы никогда не использовал == true, чтобы вытаскивать bool из nullable. Ни на одном языке.

Но я тебя услышал. В смысле, гипотезу о том, что если писать == true, это позволит универсально обходиться и с булями и с nullable, и именно поэтому люди так и пишут.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Отредактировано 05.09.2024 18:49 Alekzander . Предыдущая версия . Еще …
Отредактировано 05.09.2024 18:47 Alekzander . Предыдущая версия .
Re[7]: if (a == true)
От: IT Россия linq2db.com
Дата: 06.09.24 19:43
Оценка: +1 :)
Здравствуйте, Alekzander, Вы писали:

A>Я считал (и считаю) это экстремизмом, и эта та причина, по которой я не люблю современную культуру C++


Зря ты сразу не упомянул C++, а из контекста не только стартового топика, но и всего треда это не понятно. Так бы я не стал встревать в обсуждение этого древнего овна. Тем более обсуждать "культуру" C++. Там же одно безкультурье, начиная со стандарта
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: if (a == true)
От: Alekzander  
Дата: 07.09.24 10:14
Оценка:
Здравствуйте, IT, Вы писали:

A>>Я считал (и считаю) это экстремизмом, и эта та причина, по которой я не люблю современную культуру C++


IT>Зря ты сразу не упомянул C++, а из контекста не только стартового топика, но и всего треда это не понятно. Так бы я не стал встревать в обсуждение этого древнего овна. Тем более обсуждать "культуру" C++. Там же одно безкультурье, начиная со стандарта


Потому что тред не про C++.

  Исключительно для тех, кому интересно моё скромное мнение
Я бы и на шарпе написал a.HasValue && a.Value. Дело даже не в том, что их можно перепутать, а в том, что так нагляднее. Речь не про автосгенерённый по базе код, а про обычные алгоритмы.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.