True? False? А может Neutral?

Стандартный тип boolean с true/false это мощный инструмент, но может ли он стать еще лучше? Реализуем с его помощью состояние поставил ли юзер лайк или дизлайк посту.

Есть более общее решение под названием "Алгебраический тип данных"
https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Бул всаживать как дочерний по отношению к вашему типу neboolean будет мусором и путаницей

не всегда нужна третья логика, а если нужна: АТД легко ее решают... в виде енамов или кастомных штук, а также в виде монады Maybe и прочего — более мощнее и надежнее

вот пример из "Chaotic Evil":
https://wiki.php.net/rfc/enumerations_and_adts#examples

как вариант когда нет енама и задача отобразить третье пустое состояние: использовать Null Object Pattern
по дефолту использовать NullObject, если нет значения, если есть — использовать уже конкретный тип (например в приложении на Ангуляре я ее использую для аутентификации, если не залогинен, то по дефолту у меня AnonymousPassport, если залогинен — Passport, по итогу программа корректная и без всяких псевдо-типов (залогинен, незалогинен, neboolean) — код прямой как АК-47 без резолвов какого-то третьего типа

1
Ответить
Автор

спасибо за развернутый ответ. поизучаю

Ответить