Создание класса утилит?

Я очень плохо знаком с ООП и пробую свое самое твердое для хранения вещей строго классом базирующийся при использовании хороших принципов кодирования.

Я - справедливые пути в свой проект теперь, и у меня есть много методов общего использования, которые я хочу поместить в класс утилит. Существует ли лучший способ создать класс утилит?

public class Utilities
{
    int test;

    public Utilities()
    {
    }

    public int sum(int number1, int number2)
    {
        test = number1 + number2;
    }
    return test;
}

После создания этого класса Утилит я просто создаю объект Утилит и выполняю методы моего выбора? У меня есть эта идея класса Утилит корректной?

20
задан alexyorke 22 August 2017 в 11:43
поделиться

6 ответов

Вы должны сделать его статическим классом, например:

public static class Utilities {
    public static int Sum(int number1, int number2) {
        return number1 + number2;
    }
}

int three = Utilities.Sum(1, 2);

Класс не должен (обычно) иметь никаких полей или свойств. (Если вы не хотите использовать в коде один экземпляр какого-либо объекта, в этом случае вы можете сделать статическое статическое свойство только для чтения.

37
ответ дан 29 November 2019 в 23:11
поделиться

Лучше всего сделать функции ненадежными для членов класса. Поэтому вы можете сделать функции статическими.

Лучше сделать функции методом расширения типа. см. Здесь, например,

1
ответ дан 29 November 2019 в 23:11
поделиться

Хотя вы новичок в ООП и пытаетесь разобраться с лучшими практиками, может быть хорошей идеей попытаться избежать служебных классов. Вы можете перепроектировать свой класс, например,

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;

Это будет хорошей практикой, пока дальнейший опыт работы с ООП не поможет вам изучить компромиссы между использованием служебного класса и чистыми принципами ООП.

1
ответ дан 29 November 2019 в 23:11
поделиться

Если вы работаете с .NET 3.0 или выше, вам следует изучить методы расширения. Они позволяют написать статическую функцию, которая будет действовать против определенного типа, например Int32, при этом кажется методом on этого объекта. Таким образом, вы можете получить: int result = 1.Add(2); .

Попробуйте это; это может просто показать вам другой путь. ;)

C# Tutorial - Extension Methods

13
ответ дан 29 November 2019 в 23:11
поделиться

Вам будет лучше использовать статический класс с статическими методами. Тогда вам не нужно будет создавать экземпляр своего класса утилит, чтобы использовать его. Это будет выглядеть примерно так:

public static Utilites
{
  public static int sum(int number1, int number2)
  {
     test = number1+number2;
     return test;
  }
}

Тогда вы можете использовать это так:

int result = Utilites.sum(1, 3);
2
ответ дан 29 November 2019 в 23:11
поделиться

сделайте это.

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);
-3
ответ дан 29 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: