Düzenli olarak benim koduyla birim testleri yazma alışkanlığı olsun çalışılıyor ama okumuştum ilk yazmak için önemlidir test edilebilir kod . Bu soru test edilebilir kod yazmanın SOLID ilkelerine değinir, ancak bu tasarım prensiplerinin hiç test yazmayı planlamadan faydalı olup olmadığını (veya en azından zararlı olmadığını) bilmek istiyorum. Netleştirmek için - Yazma testlerinin önemini anlıyorum; bu onların yararlılığı ile ilgili bir soru değil.
Kafamdaki kargaşamı göstermek için, bu soruyu ilham eden parçada , yazar mevcut zamanı kontrol eden ve zamana bağlı olarak bir miktar değer veren bir fonksiyon örneği verir. Yazar bunu yanlış kod olarak işaret eder, çünkü dahili olarak kullandığı verileri (zaman) üretir ve böylece test etmeyi zorlaştırır. Yine de bana göre, zaman içinde bir argüman olarak geçen bir şey gibi görünüyor. Bir noktada değerin başlatılması gerekiyor ve neden tüketime en yakın değil? Ayrıca, aklımdaki yöntemin amacı, geçerli zamana bağlı olarak bir değer döndürmek , bu amacın değiştirilebileceğini / değiştirilmesi gerektiğini ima edeceğiniz bir parametre haline getirmektir. Bu ve diğer sorular, test edilebilir kodun "daha iyi" kodla eş anlamlı olup olmadığını merak etmeme yol açtı.
Test edilebilir kod yazmak , testlerin yokluğunda bile iyi bir uygulama mı?
Test edilebilir kod aslında daha kararlı mı? yinelenen olarak önerildi. Bununla birlikte, bu soru kodun "kararlılığı" hakkındadır, ancak kodun okunabilirlik, performans, birleştirme vb. Gibi diğer nedenlerden daha üstün olup olmadığını daha geniş bir şekilde soruyorum.
func(X)
döner "Morning"
, daha sonra tüm tekrarlarını değiştirilmesi func(X)
ile "Morning"
programı değişmeyecek (yani arama. func
Değerini döndürmek dışında başka bir şey yapmaz). Idempotency ya olduğunu gösterir func(func(X)) == X
(tip-doğru değildir), ya da func(X); func(X);
aynı yan etkiler yapar func(X)
(ancak hiçbir yan etkisi burada vardır)