Я очень плохо знаком с ООП и пробую свое самое твердое для хранения вещей строго классом базирующийся при использовании хороших принципов кодирования.
Я - справедливые пути в свой проект теперь, и у меня есть много методов общего использования, которые я хочу поместить в класс утилит. Существует ли лучший способ создать класс утилит?
public class Utilities
{
int test;
public Utilities()
{
}
public int sum(int number1, int number2)
{
test = number1 + number2;
}
return test;
}
После создания этого класса Утилит я просто создаю объект Утилит и выполняю методы моего выбора? У меня есть эта идея класса Утилит корректной?
Вы должны сделать его статическим
классом, например:
public static class Utilities {
public static int Sum(int number1, int number2) {
return number1 + number2;
}
}
int three = Utilities.Sum(1, 2);
Класс не должен (обычно) иметь никаких полей или свойств. (Если вы не хотите использовать в коде один экземпляр какого-либо объекта, в этом случае вы можете сделать статическое статическое
свойство только для чтения.
Лучше всего сделать функции ненадежными для членов класса. Поэтому вы можете сделать функции статическими.
Лучше сделать функции методом расширения типа. см. Здесь, например,
Хотя вы новичок в ООП и пытаетесь разобраться с лучшими практиками, может быть хорошей идеей попытаться избежать служебных классов. Вы можете перепроектировать свой класс, например,
public class Sum
{
private int _result;
public int Result {
get {
return _result;
}
}
public Sum(int startNum) {
_results = startNum;
}
public void Add(int num) {
_result += num;
}
}
И называется так:
Sum sum = new Sum(1);
sum.add(2);
int result = sum.Result;
Это будет хорошей практикой, пока дальнейший опыт работы с ООП не поможет вам изучить компромиссы между использованием служебного класса и чистыми принципами ООП.
Если вы работаете с .NET 3.0 или выше, вам следует изучить методы расширения. Они позволяют написать статическую
функцию, которая будет действовать против определенного типа, например Int32
, при этом кажется методом on этого объекта. Таким образом, вы можете получить: int result = 1.Add(2);
.
Попробуйте это; это может просто показать вам другой путь. ;)
Вам будет лучше использовать статический
класс с статическими
методами. Тогда вам не нужно будет создавать экземпляр своего класса утилит, чтобы использовать его. Это будет выглядеть примерно так:
public static Utilites
{
public static int sum(int number1, int number2)
{
test = number1+number2;
return test;
}
}
Тогда вы можете использовать это так:
int result = Utilites.sum(1, 3);
сделайте это.
public static class Utilities
{
int test;
public static int sum(int number1, int number2)
{
test = number1+number2;
return test;
}
}
Таким образом, вы используете его, как
int result = Utilities.sum(1, 2);