2012-03-20 3 views
0

항상 글로벌 변수가 좋지 않다는 것을 웹에서 읽었습니다. 각 함수가 해당 함수에 액세스 할 수 있고 응용 프로그램의 각 함수가 전역 변수를 수정 대규모 응용 프로그램에서는 코드의 특정 지점에서이 변수의 상태를 추적하는 것이 매우 어려워 질 수 있습니다.전역 변수 javascript, java, php, 모든 언어

하지만 내 질문에, 각 함수 어쨌든 사용할 필요가있을 변수가 있으면 글로벌, 그것을 선언하는 것이 더 나은 아닌가요? 매 함수마다 매번 변수를 인스턴스화하는 대신에?

또한 로컬 변수가 아닌 전역 변수를 사용해야합니까?

+0

GV의 주된 관심사는 한 번로드 한 날씨에 불필요하게 메모리를 보관하는 것입니다. –

+0

지구본이 귀하의 케이스에 적합한 경우 사용하십시오. 원한다면 "네임 스페이스"객체의 속성을 만들 수 있습니다. 일부는 편리하고 깔끔하기 때문에 접근 방식을 선호하지만 전역 적으로는 (메모리 사용, 성능 등) 본질적으로 잘못된 것은 없습니다. 다른 팀 또는 참여자와 함께 대규모 개발 작업을하는 경우 관리가 어려워 질 수 있습니다. – RobG

답변

0

모든 변수는 실제 또는 상상할 수있는 엔터티를 나타냅니다. 엔티티가 고유하다고 확신하는 경우 엔 정적 변수를 갖는 것이 좋습니다. 예를 들어, screen/keybord/mouse 장치는 java.awt.Toolkit 유형의 정적 변수로 표시됩니다 (getter를 통해 액세스 가능). 그런 경우는 드뭅니다. 일반적으로 프로그래머는 엔티티의 단일 인스턴스에 대해 생각하고 정적 변수를 선언 한 다음 다른 유사한 엔티티에 대한 필요성이 발생합니다. 이는 힘든 리팩터링에서 끝납니다.

0

이것은 코드가 실행되는 동안 모두 메모리 사용률입니다. 코드를 실행하는 동안 항상 적은 수의 객체를 메모리에 보관하려고합니다. 범위가 좁은 객체 (메서드 범위)는 객체가 메모리에 덜 적게 사용되므로 메모리 사용률이 높습니다. 변수를 필요한만큼 범위를 좁게 유지해야합니다. 그러나 전역 변수에 대한 구문이 java 에서처럼 액세스 수정 자 (public, private, default 등)와 완전히 다르며 전역 변수 (클래스 변수)에 private 한정자가있는 경우 클래스 외부에서 수정할 수 없습니다.