Когда вы говорите «они», на кого вы ссылаетесь?
В любом случае, двигайтесь дальше.Такой метод, как то, что вы представили, вполне подойдет - если вы этого хотите, то ОК.Не беспокойтесь.
Аналогично, для статического класса вполне допустимо иметь статическое состояние.Опять же, может случиться так, что вам это понадобится в какой-то момент.
Реальная вещь, на которую стоит обратить внимание, это что-то вроде
static class A
{
private static int x = InitX();
static A()
{
Console.WriteLine("A()");
}
private static int InitX()
{
Console.out.WriteLine("InitX()");
return 0;
}
...
}
Если вы используете что-то подобное, то вы могли былегко запутаться, когда вызывается статический конструктор и когда вызывается InitX()
.Если бы у вас были некоторые побочные эффекты / изменения состояния, которые происходят, как в этом примере, то это было бы плохой практикой.
Но что касается вашего фактического вопроса, такого рода изменения состояния и побочные эффекты в порядке.
Редактировать
Если вы посмотрите на ваш второй пример и точно примете правило, как оно указано, то да, вы его нарушаете.
Но ...
Не позволяйте этому правилу обязательно остановить вас от подобных вещей.В некоторых случаях это может быть очень полезно, например, когда метод выполняет интенсивные вычисления, запоминание является простым способом снижения затрат на производительность.Хотя запоминание технически имеет состояние и побочные эффекты, выходные данные всегда одинаковы для каждого ввода, что действительно важно.