2011-05-30 19 views
6

Bu daha önce sorulmuşsa ve bunun olmadığını tahmin etmek zorsa özür dileriz, ancak açık bir anahtar kelime ilişkilendirmesi yoktur, bu yüzden kontrol edilmesi zordur. Ben GetByCode(string code) ve GetByCodeAndResourceType(string code, string resourceType) gibi standart yöntemlerle bir çift C# sınıf varsa bunlar parametre listesi ile ayırt edilebilir beriBir 'Get' yönteminin adı, parametrelerin adını içermeli midir?

, sadece bir Get(...) aşırı olmalarını adlandırmak gerekir?

Açıkçası, aynı yöntem imzasının farklı amaçlar için gerekebileceği senaryolar olabilir, ancak bunun dışında, intellisense için geçerli yorumlar olduğu sürece ayrı yöntem adlarına gereksinim göremiyorum.

Kimin artıları ve eksileri olduğunu düşündüklerini bilmek istiyorum.

cevap

6

Her ikisi de aynı şeyi yaparlarsa (veya aynı değeri döndürürlerse) ancak farklı girişleri kabul ederse, parametreleri aşırı yükleyerek bunları ayırmak daha iyi olur. Yaptıkları ya da geri döndüklerinde bir fark varsa, o zaman farklı isimler kullanırdım. Adlandırmadaki bir farkın bir başka nedeni performans veya başka bir özellik değil (örneğin bir aşırı yük diğerinden çok daha yavaş olabilir) olabilir. Bu, dokümanlar içinde yazılabilir ancak farklı adlar vermek, buna daha fazla dikkat çeker.

3

Get yerine Find sözcüğünü kullanma eğilimindeyiz ve evet, yöntem adında parametre adını kullanıyoruz.

Belirttiğiniz gibi, parametre türlerinin benzersiz bir imza sağlamadığı durumlar olacaktır. Bu yüzden uzun isimleri seçtik çünkü tutarlı.

+1

+1 Evet, tutarlılık önemlidir –

3

Sanırım bir yöntem onun imzasıyla ne yaptığını anlamalı. Bir yöntem imzası, adı, geri dönüş tipi ve parametreleriyle oluşur. Bu nedenle, bu bileşenlerin herhangi birinde (örn., GetByName(string name) veya List<string> GetNames*List*(..)) tekrarlanması tamamen gereksizdir.

İlgili konular