Сообщение Re: if (a == true) от 11.03.2025 10:28
Изменено 11.03.2025 10:32 T4r4sB
Re: if (a == true)
Здравствуйте, Alekzander, Вы писали:
A>О каких мирах речь? Есть такая практика — стараться использовать тип bool с большим разбором. Например, если есть упрощённая ("динозавровая") модель сервиса (или запущен, или нет — 50/50, состояния "запускается" и "глушится" принципиально не учитываются), надо не bool isStarted, а расписывать поле состояний (Started, NotStarted) в енаме. Логика тут такая, что если мы берём bool, то просто приспосабливаем другое, нерелевантное поле состояний только потому, что у него то же число элементов (два), а это, как вы понимаете, зашквар. Конечно, если правильно сформулировать имя (isStarted), то острота проблемы снижается, но всё равно "как-то, доктор, неаккуратненько". Особенно неаккуратненько это выглядит при рассматривании вызова функции с десятью bool'ами.
Я тут увидел старую тему и вспомнил еще один конченый случай. Когда у результата функции куча состояний, и ноль это успех, а все остальное это разные коды ошибок.
И чтобы проверить успешность, то казалось бы для проверки ошибочного случая логично писать
Но нет блин некоторые кодеры сокращают буквы и пишут так:
А я читаю и не пойму: если сервис стартанул то какая нахрен ошибка?!
Я не первый день на крестах пишу, я в курсе что ноль это фолс, но самих-то не корежит при виде такого условия?
A>О каких мирах речь? Есть такая практика — стараться использовать тип bool с большим разбором. Например, если есть упрощённая ("динозавровая") модель сервиса (или запущен, или нет — 50/50, состояния "запускается" и "глушится" принципиально не учитываются), надо не bool isStarted, а расписывать поле состояний (Started, NotStarted) в енаме. Логика тут такая, что если мы берём bool, то просто приспосабливаем другое, нерелевантное поле состояний только потому, что у него то же число элементов (два), а это, как вы понимаете, зашквар. Конечно, если правильно сформулировать имя (isStarted), то острота проблемы снижается, но всё равно "как-то, доктор, неаккуратненько". Особенно неаккуратненько это выглядит при рассматривании вызова функции с десятью bool'ами.
Я тут увидел старую тему и вспомнил еще один конченый случай. Когда у результата функции куча состояний, и ноль это успех, а все остальное это разные коды ошибок.
И чтобы проверить успешность, то казалось бы для проверки ошибочного случая логично писать
#define SUCCESS 0
if (service.started != SUCCESS) {
// handle error
}Но нет блин некоторые кодеры сокращают буквы и пишут так:
#define SUCCESS 0
if (service.started) {
// handle error
}А я читаю и не пойму: если сервис стартанул то какая нахрен ошибка?!
Я не первый день на крестах пишу, я в курсе что ноль это фолс, но самих-то не корежит при виде такого условия?
Re: if (a == true)
Здравствуйте, Alekzander, Вы писали:
A>О каких мирах речь? Есть такая практика — стараться использовать тип bool с большим разбором. Например, если есть упрощённая ("динозавровая") модель сервиса (или запущен, или нет — 50/50, состояния "запускается" и "глушится" принципиально не учитываются), надо не bool isStarted, а расписывать поле состояний (Started, NotStarted) в енаме. Логика тут такая, что если мы берём bool, то просто приспосабливаем другое, нерелевантное поле состояний только потому, что у него то же число элементов (два), а это, как вы понимаете, зашквар. Конечно, если правильно сформулировать имя (isStarted), то острота проблемы снижается, но всё равно "как-то, доктор, неаккуратненько". Особенно неаккуратненько это выглядит при рассматривании вызова функции с десятью bool'ами.
Я тут увидел старую тему и вспомнил еще один конченый случай. Когда у результата функции куча состояний, и ноль это успех, а все остальное это разные коды ошибок.
И чтобы проверить успешность, то казалось бы для проверки ошибочного случая логично писать
Но нет блин некоторые кодеры сокращают буквы и пишут так:
А я читаю и не пойму: если сервис стартанул то какая нахрен ошибка?!
Я не первый день на крестах пишу, я в курсе что ноль это фолс, но самих-то не корежит при виде такого условия?
A>О каких мирах речь? Есть такая практика — стараться использовать тип bool с большим разбором. Например, если есть упрощённая ("динозавровая") модель сервиса (или запущен, или нет — 50/50, состояния "запускается" и "глушится" принципиально не учитываются), надо не bool isStarted, а расписывать поле состояний (Started, NotStarted) в енаме. Логика тут такая, что если мы берём bool, то просто приспосабливаем другое, нерелевантное поле состояний только потому, что у него то же число элементов (два), а это, как вы понимаете, зашквар. Конечно, если правильно сформулировать имя (isStarted), то острота проблемы снижается, но всё равно "как-то, доктор, неаккуратненько". Особенно неаккуратненько это выглядит при рассматривании вызова функции с десятью bool'ами.
Я тут увидел старую тему и вспомнил еще один конченый случай. Когда у результата функции куча состояний, и ноль это успех, а все остальное это разные коды ошибок.
И чтобы проверить успешность, то казалось бы для проверки ошибочного случая логично писать
#define SUCCESS 0
if (service.started != SUCCESS) {
// handle error
}Но нет блин некоторые кодеры сокращают буквы и пишут так:
if (service.started) {
// handle error
}А я читаю и не пойму: если сервис стартанул то какая нахрен ошибка?!
Я не первый день на крестах пишу, я в курсе что ноль это фолс, но самих-то не корежит при виде такого условия?