Являются ли статические локальные переменные плохой практикой? - PullRequest
6 голосов
/ 26 апреля 2011

Вопрос по C ++: Статические локальные переменные в методах - плохая практика?

В VB.NET, когда мне нужен простой счетчик или что-то, что увеличивается при каждом вызове метода, я часто нахожу себя пишущим код вроде:

Private Sub tmrRefresh_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrRefresh.Tick

  Static a As Integer = 0
  a += 1
  '...rest of method depends on a

End Sub

Рекомендуется ли это в VB.NET и ООП в целом?

Ответы [ 2 ]

8 голосов
/ 26 апреля 2011

Являются ли статические локальные переменные плохой практикой?

Нет .Статические локальные переменные отличаются только одним отношением к нелокальным частным переменным: они имеют меньшую область видимости.Поскольку вы всегда хотите, чтобы область действия была как можно меньше (= лучшая инкапсуляция), локальная статика может иметь преимущество перед частными переменными.

С другой стороны, локальные статические переменные могут быть трудно правильно инициализировать.Если требуется сложная инициализация (например, если вам потребуется повторно инициализировать переменную в дальнейшем), локальные статические переменные могут быть неподходящими.

0 голосов
/ 24 января 2018

Я бы НЕ рекомендовал это.

Статика в Visual Basic означает, что одна или несколько объявленных локальных переменных должны продолжать существовать и сохранять свои последние значения после завершения процедуры, в которой они объявлены.Справка: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/modifiers/static

Итак, зачем вы это делаете?В следующий раз, когда вы зайдете в этот Sub, вы в любом случае повторно инициализируете эту переменную.Я не думаю, что вы даже можете получить к нему доступ больше, если у вас не будет второго экземпляра этого класса, и если оба экземпляра выполняются одновременно, значение «a» может повлиять на значение «a» во второмпример.Если не предполагается, это будет иметь катастрофические последствия.Как правильно сказал предыдущий ответ - чем меньше объем, тем лучше

Итак, если я не ошибаюсь, это будет очень плохая практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...