Geçenlerde bir API endpoint'ini yeniden yazıyordum. Mevcut sistemde tüm veri dönüşleri belirli bir JSON şablonuyla sarılıyor. Ama benim yazdığım yeni endpoint, performans ve okunabilirlik açısından GraphQL benzeri, esnek bir yapıya çok daha uygundu. İçimden bir ses "Bunu hemen deploy edelim, herkes bayılacak!" diye bağırıyordu. Ama sonra projenin consistency ilkesi aklıma geldi.
Takım olarak aldığımız karar netti: "Aynı tür işlemler, aynı formatta yanıt dönecek." Bu, frontend'deki state management ve error handling için hayati önemde. Yeni gelen geliştirici, sistemi 10 dakikada anlayabiliyor. Tüm response wrapper'lar aynı. Peki ya teknik olarak daha üstün olan çözüm?
JavaScript:
// Mevcut (Tutarlı) Yapı:
{
"success": true,
"data": { ... }, // Asıl veri burada
"message": "İşlem başarılı"
}
// Hayalimdeki (Daha İyi) Yapı:
{
"user": { ... },
"relatedPosts": [ ... ], // Nested ve esnek
"meta": { ... }
}
İkincisi bu spesifik iş için kesinlikle daha temiz ve verimli. Ama projeye bir bütün olarak baktığında, yeni bir pattern daha eklemek, uzun vadede technical debt ve kafa karışıklığından başka ne getirir?
Sonunda, o "daha iyi" çözümü reddettim. Endpoint'i, mevcut tutarlı yapıya uyacak şekilde yazdım. İçim biraz buruk oldu tabii, kodun potansiyelini tam kullanamamak yazılımcı olarak canını sıkıyor. Ama takım verimliliği ve projenin sürdürülebilirliği, o anki teknik "havalılıktan" daha önemliydi.
Siz de böyle oldu mu hiç? Gözünüzü kapatıp daha şık, daha temiz bir kodu çöpe atıp, sırf consistency için mevcut (belki de köhne) yapıya uydurduğunuz? Yoksa "Consistency takıntısı inovasyonu öldürür!" diyenlerden misiniz? Tartışalım.