Her şeyden önce, TDD kesinlikle gelmez zorlamak KATI kod yazmak size. İsterseniz TDD yapabilir ve büyük bir karmaşa yaratabilirsiniz.
Tabii ki, SOLID ilkelerini bilmek yardımcı olur, çünkü aksi takdirde sorunlarınızın çoğuna iyi bir cevap vermeyebilir ve böylece kötü testlerle birlikte kötü kod yazabilirsiniz.
SOLID ilkelerini zaten biliyorsanız, TDD bunları düşünmenizi ve aktif olarak kullanmanızı teşvik edecektir.
Yani illa harflerin tamamı kapsamaz dedi KATI ama kuvvetle teşvik eder ve o kadar hemen görünür ve rahatsız edici yapmadığı sonuçlarını yapar, çünkü en azından kısmen KATI kod yazmak size teşvik etmektedir.
Örneğin:
- İhtiyacınız olanı alay edebilmek için ayrıştırılmış kod yazmanız gerekir. Bu, Bağımlılık Ters Çevirme İlkesini destekler .
- Açık ve kısa testler yazmanız gerekir, böylece testlerde çok fazla değişiklik yapmak zorunda kalmazsınız (aksi halde yapılırsa büyük bir kod gürültüsü kaynağı olabilir). Bu, Tek Sorumluluk İlkesini destekler .
- Bu tartışılabilir, ancak Arayüz Segregasyon Prensibi , sınıfların alay etmeyi takip etmeyi ve anlamayı kolaylaştıran daha hafif arayüzlere bağımlı olmalarına izin verir, çünkü "Neden bu 5 yöntem de alay edilmedi?" daha da önemlisi, hangi yöntemin alay edileceğine karar verirken çok fazla seçeneğiniz yoktur. Test etmeden önce sınıfın tüm kodunu gerçekten gözden geçirmek istemiyorsanız ve nasıl çalıştığına dair temel bir anlayış elde etmek için deneme yanılma yöntemini kullanmak iyi bir şeydir.
Açık / Kapalı ilkesine uymak , koddan sonra yazılan testlere yardımcı olabilir , çünkü genellikle test edilen sınıflardan türeyen test sınıflarındaki harici hizmet çağrılarını geçersiz kılmanıza izin verir. TDD'de bunun diğer ilkeler kadar gerekli olmadığına inanıyorum, ama yanılmış olabilirim.
Sınıfınızın, aynı statik olarak yazılan arabirimi uygulayan desteklenmeyen bir örnek alması için değişiklikleri en aza indirmek istiyorsanız, ancak uygun test senaryolarında gerçekleşmesi olası değilse, Liskov ikame kuralına uymak harikadır. genellikle bağımlılıklarının gerçek dünyadaki uygulamalarını test altında herhangi bir sınıftan geçmeyecektir.
En önemlisi, daha temiz, daha anlaşılır ve bakımı kolay bir kod yazmanızı teşvik etmek için SOLID ilkeleri yapıldı ve TDD de öyle. Dolayısıyla, TDD'yi düzgün bir şekilde yaparsanız ve kodunuzun ve testlerinizin nasıl göründüğüne dikkat ederseniz (ve hemen geri bildirim, API ve doğruluk açısından akıllıca olduğunuz için çok zor değil), genel olarak SOLID ilkeleri hakkında daha az endişelenebilirsiniz.