Benim için, bir şey için iyi bir isim bulmak her zaman onu varlığını haklı çıkarmak zorunda olan bir nesne olarak düşünmeye geri döner . Kendine sor:
- Sınıf / yöntem / değişken ne yapar, yani genel amacı ne ve ne içindir?
- Özel olarak amacı ile ilgili olarak ne iletişim kurması gerekiyor, yani adın içinde bulunması gereken temel kısım nedir?
Çoğu geliştirici, okunabilirliğin , adlandırma söz konusu olduğunda her zaman çok önemli olduğu konusunda hemfikirdir . Sadece kod yazmayın, böylece yazarken ne demek istediğinizi anlayın, kod yazıp gelecekte bir noktada ilk kez görünen birisinin çok fazla düşünmek zorunda kalmadan ne demek istediğini bilmesi için yazın. Kodu yalnızca bir kez yazacaksınız, ancak kullanım ömrü boyunca büyük olasılıkla birçok kez düzenlenmesi ve daha çok kez okuması gerekecektir.
Kod kendini belgeliyor olmalıyani, adlandırma bir şeyin ne yaptığını açıkça belirtmelidir. Bir kod satırının bir yorumda ne yaptığını açıklamanız gerekiyorsa ve işleri yeniden adlandırmak onu yeterince iyileştirmiyorsa, orijinal satırı okumak için, bu satırı uygun şekilde açıklayıcı bir adla yeniden yapılandırmayı ciddi şekilde düşünmelisiniz. Yeni yöntem çağrısı, neler olduğunu açıklar. Uzun isimlerden korkmayın; Elbette sınıf / yöntem / değişken isimlerinde romanlar yazmamalısınız, fakat çok kısa ve açıklayıcı bir ismin çok kısa ve açık olmasını tercih ederim ve başlık altında bakıp ne yaptığını çözmem gerekiyor. X / y koordinatları ve yaygın olarak kullanılan kısaltmalar gibi bazı belirgin istisnalar dışında, tek karakterli adlardan ve kısaltmalardan kaçının. "BackButton" yerine "bkBtn" diye bir şey söylemek
Diliniz izin verdiği sürece, kodunuzu İngilizce bir cümle gibi okuyun. Nesneler isimleri, yöntemler fiilleri kullanır. Boolean yöntemleri tipik olarak "is" ile başlar, ancak "olabilir", "gerekir" veya "yapar" gibi kullanım durumlarına bağlı olarak, anlamını daha iyi ileten birçok seçenek vardır. Elbette, tüm diller bu konuda Smalltalk kadar iyi olamaz, ancak bazı sembollerin genellikle cümlenin parçaları olduğu anlaşılır. Şahsen mümkün olduğunca diğer dillere almak istediğim iki Smalltalk sözleşmesi, "her" ile döngü parametrelerinin adını ve koleksiyonlar için "a" (veya "bir" veya "bazı" makalelerini önekleyerek) . Bu, Java’da ortak bir standart olmayabilir ve herhangi birinin bu parçayı yoksaymasına izin verilir, ama bunun kodun okunabilirliğini büyük ölçüde artırdığını buldum. Örneğin (Java’da örnek):
public boolean shouldConsiderAbbreviating(List<String> someNames) {
for (String eachName : someNames) {
if (isTooLong(eachName)) {
return true;
}
}
return false;
}
Bu, biraz Java bilgisi olan insanlara aşağıdaki gibi okunabilir olmalıdır:
Bazı isimlerin (dize olan) bir listesini kısaltmayı düşünmeniz gerekip gerekmediğini belirlemek için, bazı isimler üzerinde yineleme yapın ve her isim için çok uzun olup olmadığını belirleyin; öyleyse, geri dön true
; hiçbiri çok uzun değilse, geri dönün false
.
Yukarıdaki kodu, sadece daha karmaşık bir yöntemde , argümanı strings
ve döngü değişkenini adlandırmakla karşılaştırın string
. Kullanımın adına bir bakışta açık olması yerine, farkı görmek için yakından bakmak gerekir.