Tek tehlike params
Kelime, eğer bir sonraki Yöntem yapılan aramalar, kodlanmış olan
- birisi yanlışlıkla / kasıtlı olarak bir / daha fazla gerekli Parametreyi Yöntem İmzasından kaldırır ve
- bir / daha fazla Gerekli
params
İmza değişikliğinden önce Parametre'den hemen önceki Parametreler Parametre ile Tür Uyumlu params
,
bu Çağrılar daha önce isteğe bağlı Parametre olarak kabul edilen gerekli Parametreler için tasarlanan bir / daha fazla İfade ile derlemeye devam edecektir params
. Sadece bunun en kötü durumuyla karşılaştım: params
Parametre Type idi object[]
.
Bu dikkat çekicidir, çünkü geliştiriciler bileklerini tokatlamak için derleyicilere, gerekli tüm Parametrelerle Parametrelerin Bir Yöntemden kaldırıldığı (çünkü beklenen Parametrelerin # değişeceği) senaryo ile kullanılırlar .
Benim için kısayola değmez. (Type)[]
olmadan params
, Geçersiz Kılmalara gerek kalmadan 0 ila sonsuz # Parametreyle çalışır. En kötü durum, , new (Type) [] {}
geçerli olmadığı Çağrılara a eklemeniz gerekecek .
Btw, imho, en güvenli (ve en okunabilir uygulama):
Adlandırılmış Parametreler üzerinden geçin (şimdi VB; P'den sonra C # ~ 2 yıl içinde bile yapabiliriz ) (çünkü:
1.1. öyle sadece bu şekilde garanti istenmeyen değerlerin önleme Parametre düzeni, Uyumlu-Type sonra Parametreler geçirilen ve / veya Çağrılar kodlanmış sonra değişiklik saymak,
1.2. o azaltan yeni bir anlam yansıtan olasılıkla yeni tanımlayıcı adı hemen yanındaki değeri kendisine geçirilen etmektir, çünkü bir parametre anlamı değişikliğinden sonra bu şansı
1.3. Parametre için hangi İfadenin geçildiğini görmek için virgül saymak ve Çağrıdan İmzaya atlamak zorunda kalmaz ve
1.3.1. Bu arada, bu nedenle tek başına olmalıdır bol (sadece DRY İlke sık hataya yatkın ihlallerinden kaçınmaya açısından okunan kodu da saymıyorum değiştirmek o), ancak bu nedenle olabilir katlanarak tane varsa daha önemli / daha fazla Kendileri virgül içeren İfadeler Geçirilir, yani Çok Boyutlu Dizi Referansları veya Çok Parametreli İşlev Çağrıları. Bu durumda, hatta (eğer hala fazladan bir adımdan olacağını olabilir bile hangi kullanamadı başına Parametre başına sizin için virgül sayım otomatik hale getirmek için düzenleyici bir bir Seçim özelliği bütün değişikliklerini Bul Yöntem Çağrısı).
1.4. İsteğe Bağlı Parametreleri kullanmanız ( params
veya kullanmamanız) gerekiyorsa, belirli bir İsteğe Bağlı Parametrenin Geçirildiği Çağrıları aramanıza olanak tanır (ve bu nedenle, büyük olasılıkla Varsayılan Değer değil veya en azından Varsayılan Değer olma olasılığı vardır),
(NOT: 1.2 ve 1.3 nedenleri, ilk Çağrıları kodlarken bile Çağrıların ne zaman okunması ve / veya değiştirilmesi gerektiğinden bahsetmemek için hata olasılığını azaltabilir ve azaltabilir.))
ve
daha iyi okunabilirlik için ONE - PARAMETER - PER - LINE yapın (çünkü:
2.1. daha az dağınık ve
2.2. sağa ve sola kaydırmaktan kaçınır (ve PER - LINE yapmak zorunda kalmaz, çünkü çoğu ölümcül birden çok satırın sol kısmını okuyamaz, sağa kaydırır ve sağ kısmı okuyamaz)).
2.3. Atama İfadeleri için zaten geliştirdiğimiz "En İyi Uygulama" ile tutarlıdır, çünkü Geçirilen her Parametre özünde bir Atama İfadesidir (bir Yerel Değişkene Değer veya Referans atama). Kodlama Stili'ndeki en son "En İyi Uygulama" yı takip edenler gibi , satır başına birden fazla Atama İfadesi kodlamayı hayal etmeyecek gibi, muhtemelen "En İyi Uygulama" benim dehamı yakalamamalıdır ( P) ) parametrelerini iletirken bunu yapın.
NOTLAR :
Aşağıdaki durumlarda adları Parametreleri yansıtan Değişkenleri iletmek yardımcı olmaz:
1.1. Değişmez Sabitleri (yani, "En İyi Uygulamalar" bile bile Adlandırılmış Sabit kullanmanızı gerektirmeyebilecek ve amaçları Yöntem adından kolayca çıkarılamayacak basit bir 0/1, yanlış / doğru veya boş ),
1.2. Yöntem, Değişkenlerinizi Parametrelerle aynı / benzer (veya tersi) olarak adlandırmak istemeyeceğiniz / bulamayacağınız Arayan'dan önemli ölçüde daha düşük düzey / daha geneldir veya
1.3. Eğer sizsiniz, yeniden sıralama / Tipleri çünkü hala Derleme önceki Aramalar neden olabilir İmza Parametreleri değiştirirken gerçekleşmesi hala uyumlu olacak şekilde.
VS gibi bir otomatik sarma özelliğine sahip olmak, yukarıda verdiğim 8 nedenden sadece BİRİNİ (# 2.2) ortadan kaldırır. VS 2015 kadar geç bir süre önce, # 2.1 nedeninin şiddetini artıran otomatik girintiyi (!?! Gerçekten MS?!?)
VS, Adlandırılmış Parametrelerle (elbette her satırda bir; P) Yöntem Çağrısı snippet'leri üreten bir seçeneğe ve Adlandırılmış Parametreler gerektiren bir derleyici seçeneğine (btw, gereksiniminin bir zamanlar düşünüldüğü VB'de Seçenek Seçeneğine benzer) sahip olmalıdır. eşit derecede çirkin ama artık "En İyi Uygulamalar" tarafından zorunlu olarak isteniyor ). İçinde Aslında, "arka benimday ";), 1991'de sadece aylar içinde, Named Parameters ile bir dil kullanmadan (veya görmeden) bile, anti-sheeple'ım vardı /" sadece çünkü yapabilirsin, yapman gerektiği anlamına gelmez " / körü körüne "kızartmanın uçlarını kesmeyin" kimsenin bunu görmeden onu simüle edecek şekilde (satır içi yorumlar kullanarak). kaynak kodu tuş vuruşları) bu sözdizimlerinin çoğu başladığında Punch Card döneminin bir kalıntısıdır.Onun modern donanım ve IDE'leri ve okunabilirliğin çok, çok, çok daha fazla olduğu çok daha karmaşık bir yazılımla bunun mazereti yoktur.daha önemli. "Kod yazıldığından çok daha sık okunur". Otomatik olarak güncellenmeyen kodu çoğaltmadığınız sürece, kaydedilen her tuş vuruşu biri (hatta kendiniz) daha sonra okumaya çalıştığında katlanarak daha pahalıya mal olur.