TDD ile başlamadığımı söyleyebilirim. Genel olarak mimarlık stratejilerini öğrenmek için daha fazla zaman harcadığınızda bilinçli bir karar verin. TDD, inanmaya başlasanız da bu ödevi atlamanıza izin vermeyecektir.
İşte benim onunla sorunum. Hiç bir zaman kırılmayacak şeyler üzerinde çok fazla boşa harcanan zaman gibi göründüğünüzde TDDers, büyük bir bağımlılık zincirinde beklemeyeceğiniz bir şey yakalandığında takdir edeceğinizi söylüyor. Uygulamanızı yazmadan önce bu tür şeyleri tahmin etmenin imkansız olduğunu belirttiğinizde, ki bu neden ... biz test ediyoruz, testler kullanışlı olsa bile, tasarım konusunda gerçekten daha fazla olduğunu söylüyorlar.
Ama tahmin edilemez bağlantılı bağımlılıkların dev zincirleri berbat tasarımın ürünü değil mi?
Peki hangisi?
İşte bir düşünce. Nesneye yönelik tasarımın aşağıdaki iki ilkesini Tasarım Modellerinden göz önünde bulundurarak ilk etapta devasa karmaşık bağımlılık zincirlerine sahip olamayalım:
"Arayüz program, bir uygulama değil"
Yani nesneleriniz kimin aradığını veya nasıl yapıldığını önemsememelidir. Yalnızca uygun sınırların beslendiğini ve diğer nesnelerden çağırdıkları yöntemlerin beklendiği şekilde çalışmaya yönlendirildiklerini. Çoğu durumda bağımlılık zinciriniz tek bir bağlantı noktasında, yöntem arayanın bir bölümünü çağırır ve yolların kendi yönteminize düştüğü nokta olmalıdır. Olayları kapattığınızda, hata ayıklamak için yararlı mesajlar gönderdiğiniz ve doğruladığınız ve gönderdiğiniz yer burasıdır.
Ve:
"Sınıf kalıtımı üzerinden nesne kompozisyonunu favorilik"
Kim aptal? Katlanmış kasırga miras programında bir sınıfa bir şeyler yapan adam, saçak kasası kırılmasıyla sonuçlanan 30 sınıftan mı oluşuyor, yoksa ilk önce o mimariyle gelen mi? TDD, Pisa sınıfı kulenin içindeki sorunların dibine varamayacağınız kadar erken ulaşmanıza yardımcı olabilir, ancak bu kod felaketinin son noktalarından birini değiştirmeyi denemeyi daha az acı verici hale getirir mi?
Ve beni rahatsız eden şeyin olduğu yer orası. TDD gerçekten tasarıma yardımcı oluyor mu, yoksa kötü mimariyi mümkün kılıyor mu? Bana göre kendi kendine yeten bir strateji olma potansiyeli var gibi görünüyor. Ekibiniz zayıf mimari için ne kadar fazla sorumluluğa sahip olmak zorunda değilse, bu granüler test bileşenlerinin kullanımı o kadar yararlı olur, ancak sonuçta uygulamanız birlikte çalışmak için gittikçe daha büyük bir PITA olur. yer). Bunun sonucunu anlamadaki başarısızlık eller aşağı, zaman içinde iyileştirilmesi ve değiştirilmesi gereken bir uygulama üzerinde çalışırken her zaman yapabileceğiniz en pahalı hatadır.