Ünite testlerinize kalite ve okunabilirlik açısından üretim kodunuzdan daha iyi bakmıyorsanız kesinlikle aynı şeyi yapmalısınız. Birim testler genellikle bazı kod parçalarının ne yaptığını kavramaya çalışırken ilk bakacağınız şeydir ve okuyucunun sınava bakarken ne risk altında olduğunu çabucak anlaması gerekir. Birim testleri de çok fazla değişme eğilimindedir ve eğer tasarımları sağlam değilse çok kırılır, bu da testlerin faydalarını geçersiz kılar.
Demeter Yasası'nın ihlali kesinlikle ünitenizde aklıma gelen diğer 2 kişinin yanı sıra bu testlerden dolayı bir problemdir:
Testleriniz, Düzenleme veya Yasa bölümlerinde Demeter Yasasını ihlal ederse, ünite testleriniz sadece sizin kodunuzun bir başka tüketicisi olduğundan ve muhtemelen aynı zamanda test edilen sınıfı arayacak ve çalıştıracağınız için üretim kodunuzun da bir işareti olabilir. başka bir üretim kodunun yapacağı şekilde.
Eğer testleriniz Demeter Yasasını Assert bölümlerinde ihlal ederse (yani, test edilen nesnenin bağımlılık grafiğine derinlemesine yerleştirilmiş bir şeyin değerini doğrularsanız), bunlar testlerden ziyade entegrasyon testleridir. Başka bir deyişle, TestA’da ABCD’nin bir şeye eşit olduğunu iddia ederseniz, aslında sadece A’dan ziyade D ve A’yı test etmeye çalışıyor olabilirsiniz .
Bu arada, söylediğinde
Daha hızlı yazmak ve çok fazla değişken kullanmamak için Demeter Yasasını çok sık çiğniyorum.
bu yazının farkında olmalısın
var grab = myDependency.Grab;
var something = grab.Something;
var very = something.Very;
very.Deep();
aslında Demeter'den daha iyi değil Demeter
myDependency.Grab.Something.Very.Deep();
Eğer demek istediğin buysa.