Когда делать метод статическим вспомогательным методом или методом расширения, это субъективное решение. Если вам нужна помощь в принятии решения о том, следует ли делать метод методом расширения, спросите себя, имеет ли смысл включать этот метод в другой класс как обычный метод экземпляра.
Например, у вас может быть такой метод:
public class Customers
{
public static Customer GetCustomer(string name)
{
// implementation
return customer;
}
}
Имеет ли это смысл как метод экземпляра класса String
?
public class String
{
public Customer GetCustomer()
{
// implementation
return customer;
}
// other methods
}
В плане дизайна это сводит класс String
к совершенно не связанному классу. Это делает класс String
«кухонной раковиной», которая собирает все и вся, что связано со строками.
С другой стороны, предположим, что у вас есть такой метод:
public class StringHelper
{
public static string[] Split(string s, string separator)
{
// implementation
return array;
}
}
Имеет ли это смысл как метод экземпляра класса String
?
public class String
{
public string[] Split(string separator)
{
// implementation
return array;
}
// other methods
}
Абсолютно! Это естественное расширение к существующей Split
функциональности. Может быть включено в исходную реализацию String
.
Все промежуточное может оцениваться в каждом конкретном случае.