глобальные переменные javascript, java, php, все языки - PullRequest
0 голосов
/ 20 марта 2012

Я всегда читаю в Интернете, что глобальные переменные плохие, и я понимаю, что они плохие, потому что каждая функция имеет к ним доступ, и если каждая функция в приложении изменяет глобальную переменную, в большом приложении она может стать очень трудно отследить состояние этой переменной в определенной точке кода.

Но мой вопрос заключается в следующем: если у меня есть переменная, которую каждая функция должна будет использовать в любом случае, не лучше ли объявить ее глобальной? вместо того, чтобы каждый раз создавать экземпляр моей переменной внутри каждой функции?

Кроме того, когда мне следует использовать глобальные переменные, а не локальные?

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Это все об использовании памяти во время выполнения кода.Вы всегда пытаетесь сохранить меньше объектов в памяти во время выполнения кода. Объект с меньшей областью действия (область действия метода) будет меньше жить в памяти вашего объекта, следовательно, будет эффективно использоваться память.Так что нужно держать переменную как можно меньше.Но ваше утверждение для глобальной переменной не полностью корректно, так как в java у нас есть модификатор доступа (public, private, default и т. Д.), И если какая-либо глобальная переменная (переменная класса) имеет модификатор private, то она не может быть изменена за пределами класса.

0 голосов
/ 20 марта 2012

Каждая переменная представляет некоторую реальную или воображаемую сущность.Если вы уверены, что сущность уникальна, тогда нормально иметь статическую переменную для нее.Например, устройства screen / keybord / mouse представлены статической переменной типа java.awt.Toolkit (доступной через геттер).Но такие случаи редкие.Обычно программист думает об одном экземпляре объекта и объявляет для него статическую переменную, а затем возникает необходимость в другом подобном объекте, что заканчивается трудоемким рефакторингом.

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