Downcasting popüler değil, belki bir kod kokusu
Katılmıyorum. Downcasting son derece popüler ; Çok sayıda gerçek dünya programı, bir veya daha fazla downcast içerir. Ve belki de bir kod kokusu değil. Öyle kesinlikle bir kod koku. Bu nedenle, indirme işleminin programın metninde tezahür etmesi zorunludur . Kokuyu daha kolay fark edebilmeniz ve kod incelemesine dikkat etmek için harcayacağınız şekilde.
Hangi durumda [ları] hangi indirmeleri kod yazmak uygun olur?
Herhangi bir durumda:
- ifadenin derleme zamanı türünden daha belirgin olan bir ifadenin çalışma zamanı türü ile ilgili bir gerçek hakkında % 100 doğru bilgiye sahipseniz ve
- Derleme zamanı türünde bulunmayan nesnenin yeteneğini kullanmak için bu gerçeğin avantajlarından yararlanmanız gerekir.
- Oyuncu kadrosunu yazmak için zaman ve çabanın kullanılması, ilk iki noktanın herhangi birini ortadan kaldırmak için programı yeniden düzenlemekten daha iyidir.
Bir programı ucuza yeniden düzenleyebilir, böylece çalışma zamanı türü derleyici tarafından çıkarılabilir ya da daha fazla türetilmiş türün kapasitesine gerek duymamanız için programı yeniden düzenleyebilirseniz, bunu yapın. Programı yeniden düzenlemenin zor ve pahalı olduğu durumlar için dile aşağıya doğru yayınlar eklendi .
Neden downcasting dili tarafından destekleniyor?
C #, yapılacak işleri var pragmatik programcılar tarafından icat edilmiştir için yapılacak işler var pragmatik programcılar. C # tasarımcıları OO purists değildir. Ve C # tipi sistem mükemmel değildir; tasarım gereği, bir değişkenin çalışma zamanına yerleştirilebilecek kısıtlamaları hafife alır.
Ayrıca, downcasting C # ile çok güvenlidir. Downcast'in çalışma zamanında doğrulanacağına dair kesin bir garantimiz var ve eğer doğrulanamazsa program doğru olanı yapıyor ve çöküyor. Bu harika; % 100 doğru anlam anlayışı türünün% 99,99 doğru olduğu ortaya çıkarsa, programınız zamanın% 99,99'unu çalıştırır ve zamanın% 99,99'unu tahmin edilemez davranmak ve kullanıcı verilerini% 0,01 oranında bozmak yerine çöker. .
EGZERSİZ: Açık bir döküm operatörü kullanmadan C # ' da bir downcast üretmenin en az bir yolu vardır . Böyle bir senaryo düşünebiliyor musunuz? Bunlar aynı zamanda potansiyel kod kokuları olduğu için, kodda açık bir döküm yapmadan bir downcast çökmesine neden olabilecek bir özelliğin tasarımında hangi tasarım faktörlerinin kullanıldığını düşünüyorsunuz?