Re: Класс ради элегантности
От: Quebecois Канада https://www.canada.ca/
Дата: 14.08.22 15:50
Оценка: +3
Здравствуйте, elmal, Вы писали:

Ну у меня такое обычно получается в процессе рефакторинга, т.е.

static int Calculate(int x);


сначала вырастает в:

static int Calculate(int x, int y, int z, double a, out string c);


потом разбивается на:

static int Calculate(int x, int y, int z, double a, out string c)
{
   int tmp1 = CalculateSomething(x, y, z);
   int tmp2 = CalculateSomethingElse(tmp1, z, a);
   c = CalculateSomeAuxiliaryOutput(tmp1, tmp2);
   return tmp2;
}


и потом, чтобы не засорять область видимости временными CalculateSomething(), и чтобы не передавать вручную по 10 параметров, упрощается в:

class Calculator
{
    readonly int X, Y, Z, A;
    public string C{get; private set;}
    public Calculator(int x, int y, int z, double a) {...}

    private int CalculateSomething();

    public int Calculate()
    {
       int tmp1 = CalculateSomething();
       int tmp2 = CalculateSomethingElse(tmp1);
       CalculateSomeAuxiliaryOutput(tmp1, tmp2);
       return tmp2;
    }

}


Если Calculate() хоть сколько-либо нетривиально, лишнее выделение памяти здесь погоды не сделает.
Отредактировано 14.08.2022 15:50 Quebecois . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.