2012-03-07 2 views
1

로그인 한 사용자가 플래시 응용 프로그램에 액세스 할 수 있어야합니다. 그러므로 나는 '사용자'변수를 전역 변수로 만들기 위해 협조하고 있습니다.전역 사용자 변수를 사용하는 것이 바람직하지 않습니까?

저는 대개 전역 변수를 사용하지 않으려하지만이 경우에는 매우 적합한 것처럼 보입니다. 그리고 나는 적극적인 사용자를 전역으로 가장 먼저 생각하는 사람이 아닙니다. Drupal과 같은 시스템에서도 로그인 한 사용자에 대한 전역 변수를 사용한다는 것을 알고 있습니다.

나는 stackoverflow가 이것을 나쁜 습관으로 생각하는지 또는 더 나은 대안이 있는지 알고 싶습니다.

답변

2

전역 변수를 사용하는 경우 해당 변수를 사용하는 모든 모듈에서 해당 변수에 대한 종속성을 작성하게됩니다. 예를 들어 다른 프로젝트에서 모듈을 다시 사용하려면이 전역 변수를 고려해야합니다.

그런데, 나는 특별히 사용자 ID에 대한 전역 변수를 갖지 않는 것이 좋지 않다는 것을 알았습니다. 만약 당신이 그것을 사용하는 모듈을 재사용하고 싶다면 어쨌든 사용자를 다루기를 원할 것이고 새로운 응용 프로그램에서도 그 전역 변수를 가질 것입니다.

이 문제를 해결할 수있는 의존성 주입 프레임 워크가 있습니다. 특정 프로젝트에 가치를 추가할지 여부는 다른 많은 고려 사항에 따라 다르며 실제로는 귀하에게 달려 있습니다.

+0

답변 해 주셔서 감사합니다. 내가 만드는 의존성을 염두에 두겠습니다. 특별히 "사용자 ID에 대한 전역 변수"라고 말하면됩니다. 전역이 단순한 정수 또는 객체 인 경우 중요합니까? 사용자의 ID 이상으로 액세스해야합니다. – jan

+0

글쎄, 당신이 더 많은 글로벌 개체를 넣을수록 더 많은 의존성이 생깁니다. 물론, 결국, 그것은 디자인 결정입니다. – Eduardo

+0

이 좋습니다. 감사합니다 – jan

0

전역 변수는 프로세서의 모든 스레드가 공유하므로 전역 변수를 사용하면 오류가 발생하기 쉽습니다. 이 문제의 원인을 확인하려면 http://charm.cs.uiuc.edu/manuals/html/tcharm/2_1.html

+2

이 문제는 Flash 런타임이 다중 스레드가되었지만 지금은 그렇지 않은 경우에만 문제가됩니다. – Eduardo

1

Robotlegs 또는 PureMVC와 같은 MVC 프레임 워크를 사용하는 경우 사용자 개체를 "M"(모델), PureMVC 용 Proxy (예 : Proxy)로 설정하여 문제를 해결할 수 있습니다. 이 방법으로 전역 변수를 직접 생성하지는 않지만 모든 장점을 얻을 수 있으며 응용 프로그램의 어느 곳에서나 액세스 할 수 있습니다.

+0

정보 주셔서 감사합니다. 나는 기존의 프레임 워크를 사용하지 않고있다. 이 솔루션과 실제 글로벌의 차이점은 무엇입니까? – jan

+1

변수는 프레임 워크에 의해 관리되며 프레임 워크 메서드를 사용하여 모든 곳에서 액세스 할 수 있습니다. 물론 필요한 경우 업데이트하거나 삭제할 수도 있고 독서 만 허용 할 수도 있습니다 (공용 getter). UserModel 클래스를 만들고 (백엔드 검색된) 사용자 객체를 그 안에 넣을 수 있습니다. –

관련 문제