Kendimi eski bir 3.5 çerçeve eski kodundan geçiyordum ve bir bütünün olduğu bazı noktalar buldum. senkronize bir şekilde güncellenmesi gereken listeler ve sözlükler grubu. Bu süreci, yeni özel sınıfların özel konteyner sınıflarına dönüştürerek hem kullanması hem de anlaması için son derece kolay hale getirebileceğimi belirledim. Ancak, bu yeni konteyner sınıflarının içeriğini belirli bir iç özellik tarafından organize edilmeyle ilgili kaygılarımın olduğu bazı noktalar var. Örneğin, bir sınıfın ID numarası özelliğine göre sıralama. Kap sınıfları olarak Listenin Yararlı Olduğu Açıklama <T> .Sort() versus.OrderBy() özel bir kapsayıcı sınıfının bir üyesi için
öncelikle genel bir listesi nesnenin etrafında dayanır, ilk içgüdüsel IComparable iç sınıfları yazmak ve özelliklerini karşılaştırır CompareTo yöntem yazmak amaçlanmıştır. Bu şekilde, sıralamayı çağırmak istediğimdeitems.Sort()
'u arayabilirim.
Ancak, bunun yerine items = items.OrderBy(Func)
kullanma konusunda yerine düşünüyordum. Bu şekilde, başka bir mülke göre sıralama yapmam gerekirse daha esnektir. Okunabilirlik için kullanılan özellik, IComparable koduna bakmak yerine sıralamayla listeleneceğinden dolayı okunabilirlik daha iyidir. Genel uygulama sonuç olarak daha temiz hissettirir.
Ben prematüre veya mikro optimizasyonu için umurumda değil, ama tutarlılık gibi. Uygun olduğu kadar çok vaka için bir tür uygulama yapmanın en iyi yolunu buluyorum ve gerektiğinde farklı uygulamalar kullanıyorum. Kodumu List.Sort kullanmak yerine LINQ OrderBy kullanmak için buna değer mi? Bu özel kaplar için IComparable uygulamasıyla uğraşmak daha iyi bir uygulama mı? Kararın tartılacağı yollardan herhangi biri tarafından sunulan önemli mekanik avantajlar var mı? Yoksa onların son işlevselliği, sadece kodlayıcının tercih ettiği noktaya eşdeğer midir? Burada
Ölçütlerinizin gösterdiği birim ... birimleriyle ilgilidir.Bunun gibi oranlarda, 3 OrderBy kullanmam için 3 sırayla bile sıkıştırabilirim ve sadece bir OrderBy kullanmış olmamadan daha iyi bir performans elde ettim! Sırala() –
Hesaplarınızdan yola çıkarak hızlı bir takip, bu da demek oluyor ki 'items.First()' 'item [0]' dan çok daha yavaştır? –
Hayır, 'First()', IList 'uygulamaları için optimize edilmiştir ve [0]' listesini döndürecektir. Performansın aynı olmasını bekliyorum. Sayımı doğrudan kullanarak bile olsa, hala yinelenmesi gereken tek bir öğe olur, bu yüzden muhtemelen bir mikro optimizasyon olacaktır. –