Bir yöntemi yeniden adlandırırsanız, artık aşırı yüklenmeyecektir. Kendi başına aşırı yükleme, kodu daha az okunabilir kılmaz, ancak sözdizimi net değilse uygulamayı takip etmeyi zorlaştırabilir.
Birçok dil, parametrelerin isteğe bağlı olabileceği ve isteğe bağlı parametrelerin varsayılanlarının ima edildiği bir işlevsellik arabirimi sunmak için yöntem aşırı yüklemesini kullanır. Bu, özellikle yöntem bildiriminde varsayılan parametre sözdizimini desteklemeyen diller için geçerlidir.
Yani bunu yapıyor:
void MyMethod(int param1, int param2 = 10)
{
...
}
sizi bunu yapmaktan kurtarır:
void MyMethod(int param1)
{
MyMethod(param1, Param2Default);
}
void MyMethod(int param1, int param2)
{
....
}
Hangisinin daha okunabilir olduğu konusunda, bu gerçekten size geliyor. Şahsen ikinci seçeneği tercih ediyorum, özellikle parametre listesi biraz uzun sürüyor, ancak API'nız boyunca tutarlı olduğunuz sürece gerçekten önemli olmadığını düşünüyorum.
Aşırı yükleme ile ilgili zorluk, esasen aynı şeyi yapan ve parametre listelerinin aynı olmasını istediğiniz fonksiyonların, ancak dönüş türlerinin farklı olmasını istediğinizde ortaya çıkar. Çoğu dil aynı adlı iki yöntem arasında nasıl farklı ayrım yapılacağını bilmez. Bu noktada, dönüş türündeki farkı göstermek için jenerikleri kullanma, parametre arayüzünü değiştirme veya yöntemlerinizden birini yeniden adlandırma hakkında düşünmeniz gerekir. Bu gibi durumlarla başa çıkmak için basit ve net bir adlandırma şemasına karar vermezseniz, okunabilirlik büyük bir sorun haline gelebilir.
Sizin aşırı yöntemleri adlandırma GetSomething()
ve GetSomethingEx()
farklılıklar aralarındaki tek fark vardır dönüş türleri ise, özellikle sizin yöntemler arasında ne hakkında çok şey söylemek gitmiyor. Öte yandan, GetSomethingAsInt()
ve GetSomethingAsString()
yöntemler ne yaptığını hakkında biraz daha söylemek değil, kesinlikle bir aşırı ederken, do iki yöntem benzer şeyler olduğunu göstermektedir, ancak farklı türde değer. Yöntemleri adlandırabilmenin başka yolları olduğunu biliyorum, ancak noktayı açıklamak için bu kaba örneklerin yapması gerekiyor.
OPs örneğinde, yöntem parametreleri farklı olduğu için yeniden adlandırma kesinlikle gerekli değildir, ancak bir yöntemi daha spesifik olarak adlandırmak işleri biraz daha açık hale getirir. Sonunda, gerçekten kullanıcılarınıza sunmak istediğiniz arayüz türüne gelir. Aşırı yüklenmemeye karar vermek yalnızca kendi okunabilirlik algınıza dayanarak verilmemelidir. Aşırı yükleme yöntemleri, örneğin bir API arayüzünü basitleştirebilir ve bir geliştiricinin hatırlaması gerekebilecek yöntem sayısını azaltabilir, diğer yandan arayüzü, geliştiricinin hangi formu anlamak için yöntem belgelerini okumasını gerektiren bir dereceye kadar gizleyebilir. benzer ama açıklayıcı olarak adlandırılmış bir dizi yönteme sahip olmak, sadece amacına göre bir yöntem adı okumak daha açık hale getirebilir.