SORU
22 Mart 2009, Pazar


Ne kadar olgun Microsoft Kod Sözleşmeler çerçevesinde?

Microsoft son zamanlarda ticari bir lisans ile DevLabs Code Contracts kendi çerçevesinde bir duyurusu var. Biz eve gidiyoruz üzerinde kullanarak onları projemiz (çoğunlukla C#, C /CLİ) yavaş yavaş yerine tüm özel doğrulama kodu, ama ben meraklı bilmek deneyim kişi daha vardı önce biz işlemek için, özellikle:

  • Çerçeve, büyük ve karmaşık ticari projeler için yeterince olgun olduğunu düşünüyor musunuz?

  • Sorunlar kullanırken karşısına ne var?

  • Faydaları gelen ne var?

  • Şu anda daha çok acı mı?

Bu görüş, ama bu çerçeve çok önemli bir parçası olduğu göz önüne alındığında gerektirdiğinden biraz öznel bir soru olduğunu fark ettim .NET 4.0 ve (potansiyel olarak) değiştirme yolu hepimiz yazmak doğrulama kodu, umarım bu soru olacak sol Açık için bir araya tecrüben konu için bana yardımcı olun bir karar için bir özel, çok yerinde bir soru:

Bunu kullanmak için önümüzdeki aydan itibaren olmalıyız?

Kod çoğunluğu özel durum türü atılan açısından uyumluluk kırma diye bir kavram yoktur yani kod bir API, sadece bir web hizmetine bir gemi, biz unutmayın. Bu yazı ve cevap yarar bana sadece daha fazla insan umut ediyorum ancak, bu sitede yer alan herhangi bir ayrıntı daha hoş geldiniz.

CEVAP
9 AĞUSTOS 2010, PAZARTESİ


Bu son olgun yanıt 2009, ve oldu .NET 4. Bir güncelleştirme için hak ettiğimizi düşünüyorum:

Kod Sözleşmeler de hata Ayıklama sürümleri için yeterince olgun olabilir.

Bu yükseltme biraz “” “Çoğunlukla Zararsız”. Zararsız farkındayım dan

Code Contracts home page PDF formatında çok ayrıntılı belgeler için bağlantılar. Belgeler Bölüm 5 kullanım durulmuştur. Özetlemek gerekirse,ne kadar cesur hissediyorum seçebilirsinizhakkında Sözleşme Araçları yeniden yazma Sürümde IL oluşturur.

“Bırakın benim IL” modu. yeniden yazmak yok kullanıyoruz

Daha az kod var, böylece . şimdiye kadar en çok bu beklenmedik bir faydası tadını çıkarıyorum: ^strong>daha az kod test etmek için. Gardını eriyip tüm maddeleri.

if(arg != null) { 
    throw new ArgumentNullException("arg"); 
}
// Blank line here insisted upon by StyleCop

olur:

Contract.Requires(arg != null);

Fonksiyonları daha kısadır.Niyetinizi daha net.Ve artık bir test ArgumentShouldNotBeNull adlı yazmak için sadece 100% kapsama ulaşmak için.

Şu ana kadar iki sorunla karşılaştım:

  • Başarılı olmak için bir sözleşme hatası dayanıyordu hangi birim testi yaptırdım. Test varlığı bir gaf olduğunu düşünüyor olabilirsiniz, ama bir test şeklinde bu özel yasak belge istedi. Test araçları yüklü olmadığı için inşa benim sunucuda başarısız oldu. Çözüm: araçlar yükleyin.

  • IL yeniden iki aracı kullanıyoruz: Code Contracts PostSharp. Uzun zamandır bir araya gelmediler. PostSharp 2.0.8.1283 sorun düzeltildi. Dikkatle değerlendirmek istiyorumherhangi birIL-yeniden iki araçla birlikte, ama olsun.

Şimdiye kadar, yararları zararları önemli bir ağırlığa sahip.

Güncel kaygıları diğer cevaplar kaldırdı hitaben:

  • Kod Sözleşmeler belgelerine ne yazık ki PDF olarak oldukça kapsamlı.
  • 8* *en az bir Microsoft tarafından barındırılan var.
  • Kod Sözleşmeler Standart Edition eğer herhangi bir VS2010 lisans varsa ÜCRETSİZ.
  • .NET 4. Genel toplama arabirimleri uygularken Microsoft'un sözleşmeleri karşılaştım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • Leigh Momii

    Leigh Momii

    10 Mayıs 2006
  • ModNation Racers H.Q.

    ModNation Ra

    31 Ocak 2010