Sınıftaki özelliklerle eşleşen parametre adlarıyla ilgili olarak buna benzer soruları görüyorum, ancak C # 'da muhafaza dışında parametre tipi adıyla aynı olan bir parametre adı kullanmayla ilgili hiçbir şey bulamıyorum. Bulabileceğim bir ihlal gibi görünmüyor, ancak kötü bir uygulama olarak mı kabul ediliyor? Örneğin, aşağıdaki yöntem var
public Range PadRange(Range range) {}
Bu yöntem bir aralık alır ve bazı dolgu uygulanmış yeni bir aralık döndürür. Bu nedenle, genel bağlamda, parametre için daha açıklayıcı bir isim düşünemiyorum. Bununla birlikte, "Psikolojik mesafe" hakkında Komple Tamam'ı okurken aldığım bir ipucunu hatırlatıyorum. Diyor ki
Psikolojik mesafe, iki maddenin birbirinden ayırt edilebileceği kolaylık olarak tanımlanabilir ... Hata ayıklarken, benzer değişken isimleri arasındaki ve benzer rutin isimler arasındaki yetersiz psikolojik mesafenin neden olduğu sorunlara hazır olun. Kod oluştururken, sorunu önleyebilmeniz için büyük farklılıklara sahip adları seçin.
Benim yöntem imzamın bir sürü "Range" olması, bu psikolojik mesafeyle ilgili bir sorun olabileceğini düşünüyor. Şimdi, birçok geliştiricinin aşağıdakileri yaptığını görüyorum
public Range PadRange(Range myRange) {}
Şahsen bu kongre için güçlü bir hoşnutsuzluğum var. Değişken adlarına "my" öneki eklemek, ek içerik sağlamaz.
Ben de aşağıdakileri görüyorum
public Range PadRange(Range rangeToPad) {}
Bunu "benim" ön ekinden daha çok seviyorum, ancak yine de genel olarak umursamıyorum. Sadece bana aşırı derecede ayrıntılı geliyor ve garip bir değişken adı olarak okuyor. Bana göre, bu aralığın yöntem adı nedeniyle doldurulacağı anlaşıldı.
Tüm bunlarla birlikte, benim bağırsaklarım ilk imzayla gitmek. Bana göre temiz. Gerekmediğinde bağlamı zorlamana gerek yok. Ama kendimi ya da gelecekteki geliştiricileri bu sözleşmeyle ilgili bir kötülük yapıyorum? En iyi uygulamayı ihlal ediyor muyum?
Range r
(en azından kısa bir yöntem gövdesi için) ve Range toPad
.
Range range
, sorun değil.