Является ли плохой практикой присваивать глобальную переменную быстрого доступа глобальному пространству имен (литерал объекта)? - PullRequest
0 голосов
/ 13 мая 2011

У меня есть небольшое затруднение относительно того, является ли хорошей практикой следующее:

У меня есть глобальный объектный литерал или пространство имен, которое я использую для хранения базовых функций и переменных.

Внутри этого у меня есть свойство Page, которое содержит все переменные и функции для конкретной страницы. Я также содержал ссылки на идентификаторы элементов в свойстве внутри свойства Page. Это связано с тем, что у меня есть сайт ASP.NET, поэтому мне нужно хранить сгенерированные .NET идентификаторы клиентов, чтобы я мог ссылаться на них с помощью jQuery.

Base
    Base.Page
        Base.Page.Elements

Моя проблема заключается в том, что я назначаю переменные «ярлыка» этим литералам в функциях моей страницы, например:

Base.Page.DoThisStuff = function () {
    var p = Base.Page;
    var pe = Base.Page.Elements;

    //Function Stuff Here

    p = null;
    pe = null;
}

Мой вопрос: лучше ли создать в моей главной странице переменную 'global', например var _p = Base.Page;, или это ужасная и плохая практика, и мне следует продолжить, как описано выше?

(Мои пространства имен не имеют таких коротких имен, как указано выше - они просто для иллюстрации.

Я не помечал ASP.NET или jQuery, так как не думаю, что они напрямую связаны с этим вопросом.)

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Это действительно кажется мне вопросом стиля программирования, и каждый ответ будет отличаться.

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

0 голосов
/ 13 мая 2011

В общем, вы захотите ограничить свой глобальный «след», главным образом, чтобы избежать очередного пересмотра некоторых ваших глобальных переменных. Я бы сказал, что чем проще идентификатор, тем больше вероятность того, что кто-то другой может его использовать.

То, что я видел в extjs, и я считаю хорошим компромиссом то, что они будут определять сокращения как раз под пространством имен Ext. Например, получите компонент, у вас будет метод Ext.getCmp, который, если я правильно помню, является ярлыком для Ext.ComponentMgr.get.

Таким образом, вы сохранили бы Base.Page и, возможно, Base.pe, если вам очень часто нужен доступ к элементам страницы.

...