Сообщение Re: Класс ради элегантности от 14.08.2022 15:50
Изменено 14.08.2022 15:50 Quebecois
Re: Класс ради элегантности
Здравствуйте, elmal, Вы писали:
Ну у меня такое обычно получается в процессе рефакторинга, т.е.
потом разбивается на:
и потом, чтобы не засорять область видимости временными CalculateSomething(), и чтобы не передавать вручную по 10 параметров, упрощается в:
Если Calculate() хоть сколько-либо нетривиально, лишнее выделение памяти здесь погоды не сделает.
Ну у меня такое обычно получается в процессе рефакторинга, т.е.
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, Вы писали:
Ну у меня такое обычно получается в процессе рефакторинга, т.е.
сначала вырастает в:
потом разбивается на:
и потом, чтобы не засорять область видимости временными CalculateSomething(), и чтобы не передавать вручную по 10 параметров, упрощается в:
Если Calculate() хоть сколько-либо нетривиально, лишнее выделение памяти здесь погоды не сделает.
Ну у меня такое обычно получается в процессе рефакторинга, т.е.
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() хоть сколько-либо нетривиально, лишнее выделение памяти здесь погоды не сделает.