True? False? А может Neutral?
Стандартный тип boolean с true/false это мощный инструмент, но может ли он стать еще лучше? Реализуем с его помощью состояние поставил ли юзер лайк или дизлайк посту.
1. Начнем с дефолтного варианта - юзер ставил лайк/дизлайк
У нас есть два поля + нужна дополнительная логика/тесты что бы у нас не было случая, когда юзер поставил и лайк, и дизлайк.
2. Заменяем тип на объект - теперь лайк это true, дизлайк это false. Отсутствие реакции это null. Но это не совсем корректно - null должен говорить, что объект пуст, а не обозначение стостояние.
3. Можно создать Enum,
... но есть решение получше...
4. Представляю вашем вниманию новый тип - Нибулин (neboolean), который кроме значений true и false может принимать значение - neutral.
Теперь по дефолту состояние - нейтральное, лайк - true, дизлайк - false. Идея пришла после прочтения мема - "true neutral".
Прежде чем повторится ответ из мема ниже
хочу сказать что до 1 апреля еще далеко, по-этому решил поделится идеей раньше времени.