Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Мой стиль программирования - вдруг я не прав


Автор: Timophey 16.11.2012, 02:17
Приветствую ВАС, форумчане!
Не так давно я начал писать full ajax сайты или веб-приложения на ajax, или прочие подобные вкуснЯшки на JS.
Структура кода:
Код

var core={
 vars:{a:0,b:1,...},
 methods:{
  init:function(){
   // init all events, make sth different
  },...
 }
}

Т.е. все основные переменные живут в своём адресном пространстве, методы живут и общаются между собой этими переменными на соседней ветке, core.methods.init() вызывается после рендера страницы. Так работают мои последние поделки типа http://marwin.timophey.su/ (проект сдан и уже живёт на другом адресе) или http://miko.timophey.su/ (сайт недоделан, но задумка была масштабная).
Хочу посоветоваться с более опытными и мозговитыми о правильности моего подхода, и если нет, то как его можно/нужно улучшить.
З.Ы. Пост не призван спровоцировать флуд и не несёт рекламного характера, интересно услышать совет и/или адекватное мнение.

Автор: Stolzen 16.11.2012, 09:12
Нормально. Хотя я бы vars отдельно не выделял.

Рекомендую книгу JavaScript Patterns (Stoyan Stefanov), мне в свое время помогла систематизировать знания по JS. 

Автор: Aliance 16.11.2012, 10:35
Вы не работали в большом коллективе, я прав?

Автор: CruorVult 16.11.2012, 11:30
Зачем выдумывать свое, если можно взять ядро какого-то фреймоворк либо написать по аналогии что-то свое выкинув ненужный функционал.

Автор: Amphiluke 16.11.2012, 19:45
Большой уровень вложенности объектов отрицательно сказывается на производительности. Особенно в циклах. Правильнее использовать локальные переменные в качестве быстрых ссылок на нужные глубоко вложенные свойства. Этим вы избавляете интерпретатор от необходимости просматривать длинные цепи областей видимости (и прототипов). Так можно и обеспечить определенный уровень инкапсуляции (у вас же все свойства публичны).

Пример неоптимального кода из вашего скрипта:
Цитата

Код

init:function(){
    // make nav list and numered array, make slideshows
    for(var i in core.vars.pages.acos)
        if(!core.vars.pages.list[core.vars.pages.acos[i].index]) core.vars.pages.list.push(i);


Оптимизировать можно было бы при помощи локальных переменных (объект активации просматривается первым при разрешении имен)
Код

init:function(){
    // make nav list and numered array, make slideshows
    var pages = core.vars.pages,
        acos = pages.acos,
        list = pages.list,
        i;
    for(i in acos) {
        if(!list[acos[i].index]) list.push(i);
    }


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)