TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
(java || kotlin) && devOps

31 Aug, 09:19

Telegram'da ochish Ulashish Shikoyat qilish

Еще один пост о вреде Boolean флагов)

Почему еще один - я за последние пару лет точно видел несколько таких постов)
Но хочется немного обобщить и накинуть практических советов.

В чем суть?

Есть такая рекомендация - вместо нескольких Boolean флагов у одной сущности лучше использовать поле state с Enum типом.
Почему?

Я бы даже поставил вопрос по другому - по каким признаком можно понять, что пора заводить state?

1) есть запрещенные или не имеющие бизнес-смысла комбинации флагов. А число комбинаций растет линейно. Например 3 Boolean поля = 8 комбинаций
2) при установке одного из флагов приходится сбрасывать другие
3) при установке приходится проверять другие флаги
4) флаг X1 был сделан для использования в guard условии специально в модуле Y1. Флаг X2 - в модуле Y2. Но со временем в модуле Y2 приходится проверять оба флага. Это может быть альтернативой для одного из двух предыдущих вариантов.

Видится, что при любой такой проблеме стоит задуматься о добавлении единого state и расписывании переходов между его значениями (state machine).
В идеале - линейной цепочки переходов.

И вообще говоря правило можно обобщить.
Если у сущности есть несколько Boolean или Enum полей, для которых начинают возникать проблемы, описанные выше - это повод к их объединения в один большой Enum.
И Enum тут усугубляет ситуацию: 3 Enum с минимальными 3 значениями у каждого - это уже 27 комбинаций.
Можно даже это паттерном назвать - схлопывание состояний)

#antipatterns #patterns

122 0 0 5
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot