Uzun yıllar boyunca, kodum için birim testleri yazmak için yeterli zamanım olmadığından yanlış anlaşıldım. Testler yazarken, şişirilmişlerdi, beni ancak ihtiyaç duyduğumu bildiğimde sadece birim testleri yazmam gerektiğini düşünmem için cesaretlendiren ağır şeylerdi .
Sonra Test Driven Development kullanmaya başladım ve tam bir vahiy buldum. Şimdi, kesin olarak birim testleri yazmamaya vaktim olmadığına ikna oldum .
Tecrübelerime göre, akılda tutularak test geliştirerek daha temiz arayüzler, daha çok odaklanmış sınıflar ve modüller ve genellikle daha fazla SOLID , test edilebilir kod ile karşılaşırsınız.
Her ne zaman birim testine sahip olmayan ve bir şeyi manuel olarak test etmek zorunda olan eski kodla çalıştığımda, "bu kod zaten birim testlerine sahipse bu çok daha hızlı olacağını" düşünüyorum. Her ne zaman yüksek kuplajlı koda ünite testi işlevini denemek ve eklemek zorunda kalsam, "bunun çift bağlı bir şekilde yazılmış olsaydı daha kolay olacağını" düşünüyorum.
Desteklediğim iki deneysel istasyonu karşılaştırmak ve karşılaştırmak. Biri bir süredir buralarda ve bir sürü eski kural var, diğeri ise nispeten yeni.
Eski laboratuara işlevsellik eklerken, genellikle laboratuara inmek ve ihtiyaç duydukları işlevsellik ve diğer işlevselliklerini etkilemeden bu işlevselliği nasıl ekleyebileceğim üzerinde çalışmak için saatlerce zaman harcamak söz konusudur. Kod, çevrimdışı testlere izin verecek şekilde ayarlanmamış, bu nedenle hemen hemen her şeyin çevrimiçi olarak geliştirilmesi gerekiyor. Çevrimdışı geliştirmeyi denesem , makul olandan daha fazla sahte nesne ile karşılaşırdım .
Daha yeni laboratuvarda, hemen hemen gerekli olan şeyleri alay ederek ve daha sonra laboratuvarda kısa bir zaman harcayarak, çözülemeyen tüm sorunları ütülenerek masamda çevrimdışı hale getirerek işlevsellik ekleyebilirim. -hat.
Netlik için, ve @ naught101'den beri sordum ...
Bazı özel veri analizleriyle deneysel kontrol ve veri toplama yazılımları üzerinde çalışmaya meyilliyim, bu nedenle TDD'nin revizyon kontrolü ile kombinasyonu, hem temel deney donanımındaki değişiklikleri hem de zamanla veri toplama gereksinimlerindeki değişiklikleri belgelemeye yardımcı olur.
Bununla birlikte, keşif kodunun geliştirilmesi durumunda bile, varsayımların kodlanmasından ve bu varsayımların zaman içinde nasıl geliştiğini görebilme yeteneğimden önemli bir fayda görebiliyorum.