Alışkanlık Takip Uygulamasında Streak Mantığı: Tek Hook
Alışkanlık takip uygulamalarında streak hesaplama, saat dilimi ve gece vardiyası gibi zorlukları tek bir React hook'una taşımanın avantajları ve davranışsal sınırları ele alınıyor.
Alışkanlık takip uygulamalarında streak (seri) hesaplama, ilk bakışta basit görünse de zaman dilimi farkları, gece yarısı geçen kayıtlar ve 'gün' kavramının kullanıcıya göre değişmesi gibi ayrıntılarla hızla karmaşıklaşır. Bu mantığı bileşenler arasında dağıtmak yerine tek bir useStreak hook'unda toplamak, hem kod tekrarını önlüyor hem de hesaplamayı UI'dan bağımsız test edilebilir hale getiriyor. Örnekte kullanılan resetHour parametresi özellikle dikkat çekici: gece vardiyasında çalışan bir kullanıcının gece yarısı yaptığı antrenman, uygulamanın günü her zaman 00:00'da bitirdiğini varsayması yüzünden serisini bozmamalı.
Bu mantığın düz bir yardımcı fonksiyon yerine hook olarak yazılmasının asıl nedeni kompozisyon kabiliyeti. useStreak, useNotificationSchedule veya useMilestone gibi başka hook'larla birlikte kullanılabiliyor; aynı yeniden hesaplama mantığını beş farklı bileşene tekrar tekrar aktarmak gerekmiyor. Bu yaklaşım, kod tabanı büyüdükçe bakım yükünü önemli ölçüde azaltıyor.
İçerik ayrıca teknik çözümün ötesine geçip davranışsal bir uyarı da sunuyor: seriler motivasyon aracıdır, sağlık metriği değildir ve tek bir eksik gün kullanıcıda hepsi-ya-da-hiçbir-şey hissi yaratabilir. Sağlıkla ilgili ürünlerde 'mevcut seri' ile birlikte 'en uzun seri' de gösterilmesi öneriliyor; böylece bozulan bir seri kullanıcının ilerleme algısını tamamen silmiyor. Küçük bir arayüz kararı olsa da davranışsal etkisi gerçek.