Информация об изменениях

Сообщение Re: Класс ради элегантности от 14.08.2022 15:50

Изменено 14.08.2022 15:50 Quebecois

Re: Класс ради элегантности
Здравствуйте, elmal, Вы писали:

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

static int Calculate(int x);
{/ccode]

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

[ccode]
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() хоть сколько-либо нетривиально, лишнее выделение памяти здесь погоды не сделает.
Re: Класс ради элегантности
Здравствуйте, 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() хоть сколько-либо нетривиально, лишнее выделение памяти здесь погоды не сделает.