SORU
27 EYLÜL 2011, Salı


Tembel< dezavantajları;T>?

Geçenlerde benim uygulama boyunca Lazy kullanmaya başladı, ve eğer Lazy<T> kullanırken dikkate almam gereken bir durum elbette olumsuz yönleri olup olmadığını merak ediyorum?

Lazy<T> uygun gördükleri sıklıkta, öncelikle yüklü ama aktif olmayan eklentiler bellek ayak izi azaltmak için kullanmaya çalışıyorum.

CEVAP
27 EYLÜL 2011, Salı


Okur yorumumu, biraz genişleteceğim:

Sadece Tembel kullanmaya başladım, ve genellikle bir göstergesi olduğunu bulmak kötü tasarım; ya da programcı tarafında tembellik. Ayrıca, bir dezavantajı kadar kapsamlı ile daha dikkatli olmak zorunda olduğunu. değişkenler ve uygun kapaklar oluşturun.

Örneğin, Lazy<T> kullanıcı benim görebileceğini sayfaları oluşturmak için kullandım (oturumsuz) MVC uygulaması. Rehberlik bir sihirbaz, bir kullanıcı rastgele gitmek isteyebilirsinizöncekiadım. Anlaşma yapıldığında, Lazy<Page> nesneleri bir dizi oluşturdunuz, ve eğer kullanıcı adım belirtir, tam sayfa değerlendirilir. İyi bir performans sunar buluyorum, ama ben sevmiyorum, örneğin foreach benim yapıları çoğu şimdi şöyle: bazı yönleri vardır

foreach(var something in somethings){
     var somethingClosure = something;
     list.Add(new Lazy<Page>(() => new Page(somethingClosure));
} 

I. e. kapatma sorunu ile başa çıkmak için çok proaktif. Aksi takdirde çok kötü bir performans isabet lambda saklamak ve gerektiğinde bunu değerlendirmek için olduğunu sanmıyorum.

Diğer taraftan bu olabilir bir göstergesi olan programcı olmak Lazy<Programmer>, öyle tercih edersin değil düşünerek programınızı şimdi, onun yerine bakalım doğru mantık değerlendirmek gerektiğinde, örnek olay - yerine Bina Bu dizi, sadece anlamaya sadece ne belirli istenen sayfa olurdu; ama ben tembel olmayı seçti, ve bunu bir yaklaşım.

EDİT

Lazy<T> de eşzamanlılık ile çalışırken birkaç peculiars olduğunu bana oluşur. Örneğin bazı senaryolar, ve çok iş parçacıklı özel senaryonuz için çeşitli bayrak yapılandırmaları için ThreadLocal<T> bir şey var. msdn daha fazla bilgi edinebilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mark Hyder

    Mark Hyder

    6 EKİM 2011
  • Mindy

    Mindy

    20 NİSAN 2006
  • olinerd

    olinerd

    23 AĞUSTOS 2007