Вот несколько идей.
Во-первых, соглашение C # для открытых методов состоит в том, чтобы использовать их как прописные: "KillZombie", а не "killZombie".
Вы можете сделать это только одним методом, если хотите. Вот метод, который занимает одно или несколько местоположений. Вызывающий абонент может просто предоставить список: KillZombies(location1, location2, location3)
;
private void KillOneZombie(string location) { ... }
public void KillZombies(string location, params string[] additionalLocations)
{
KillOneZombie(location);
if (additionalLocations == null) return;
foreach(string additionalLocation in additionalLocations)
KillOneZombie(additionalLocation);
}
Если вы хотите иметь два метода, подумайте, чтобы один из них взял IEnumerable<string>
вместо массива; таким образом, вызывающая сторона может передать список, запрос, массив, что угодно.
Ваш второй шаблон именования более стандартный: KillZombie и KillZombies.
Переменная params является наиболее важной, поэтому ее использование в качестве последнего аргумента, заставляющего работать params, кажется неуклюжим. Является ли мое беспокойство по поводу того, чтобы последний самый важный аргумент был последним, достаточно законным, чтобы разделить методы на KillZombie и KillZombies, или параметры все еще являются правильным способом сделать что-то?
Я бы подумал о том, как вы ожидаете, что метод будет использоваться. Рассмотрим для примера:
Console.WriteLine("User: {0} Score: {1}", user[i].Name, scores[i]);
Здесь мы явно ожидаем, что «params» будет использоваться для поддержки переменного числа аргументов в вызывающей стороне. Никто никогда не делает это:
object[] results = new object[] { user[i].Name, scores[i] };
Console.WriteLine("User: {0} Score: {1}", results);
хотя это совершенно законно. Если вы ожидаете, что ваш метод будет использоваться как Console.WriteLine, где будет передаваться различное количество параметров, но число параметров известно во время компиляции, тогда используйте params.
Если вы ожидаете, что он будет использоваться со вторым шаблоном - у кого-то есть массив местоположений - тогда не используйте params; создайте два метода, KillZombie и KillZombies, и пусть один из них получит IEnumerable из строк.