Başımı TDD'nin etrafına, özellikle de geliştirme kısmına sarmaya çalışıyorum. Bazı kitaplara baktım, ancak bulduklarım çoğunlukla test bölümü ile ilgileniyor - NUnit'in Tarihi, testin neden iyi, Kırmızı / Yeşil / Refaktör ve bir String Hesaplayıcısı nasıl oluşturulacağı.
İyi şeyler, ama bu "sadece" Birim Testi, TDD değil. Özellikle, TDD'yi test etmeye başlamak için bir Tasarım'a ihtiyacım olursa nasıl iyi bir tasarım elde etmeme yardımcı olduğunu anlamıyorum.
Göstermek için şu 3 gereksinimi hayal edin:
- Bir kataloğun bir ürün listesine sahip olması gerekir
- Katalog bir kullanıcının hangi ürünleri görüntülediğini hatırlamalıdır.
- Kullanıcılar bir ürün arayabilmeli
Bu noktada, pek çok kitap sihirli bir tavşanı şapkadan çıkarır ve sadece "Ürün Hizmetini Test Etme" ye dalar, ancak ilk başta bir Ürün Hizmeti olduğu sonucuna nasıl geldiklerini açıklamazlar. TDD'de anlamaya çalıştığım “Gelişme” kısmı budur.
Var olan bir tasarım olması gerekir, ancak varlık-hizmetlerin dışındaki şeyler (yani: Bir Ürün var, bu nedenle bir Ürün Hizmeti olmalıdır) hiçbir yerde bulunamaz. Kullanıcı, ancak hatırlatmak için işlevselliği nereye koyacaktım? Arama, Ürün Hizmetinin bir özelliği mi yoksa ayrı bir Arama Hizmetinin özelliği midir? Hangisini seçmem gerektiğini nasıl bilebilirim?)
Göre KATI , bir UserService gerekir, ama ben TDD olmadan bir sistem tasarlamak, ben Tek Yöntem Hizmetlerinin bir sürü ile bitirmek olabilir. TDD benim tasarımımı ilk önce keşfetmemi sağlamıyor mu?
Bir .net geliştiricisiyim, fakat Java kaynakları da işe yarayacak. Gerçek bir iş başvurusu ile ilgilenen gerçek bir örnek uygulama veya kitap gibi görünmediğini hissediyorum. Birisi TDD kullanarak bir tasarım oluşturma sürecini gösteren net bir örnek verebilir mi?