Стиль программирования в JavaScript
От: pose  
Дата: 20.06.12 16:47
Оценка: :)
Привет.

Не приходилось ковыряться в готовых javascript фрейморках. обычно просто подключал и юзал.
но вот захотел в lightbox поменят 2 дива местами. открыл js файл и ахнул

скажите это нормальные стиль писания на жаваскрипте?
по мне после с++ разит глаза кол-во скобок и все одним куском

Lightbox.prototype.build = function() {
      var $lightbox,
        _this = this;
      $("<div>", {
        id: 'lightboxOverlay'
      }).after($('<div/>', {
        id: 'lightbox'
      }).append($('<div/>', {
        "class": 'lb-outerContainer'
      }).append($('<div/>', {
        "class": 'lb-container'
      }).append($('<img/>', {
        "class": 'lb-image'
      }), $('<div/>', {
        "class": 'lb-nav'
      }).append($('<a/>', {
        "class": 'lb-prev'
      }), $('<a/>', {
        "class": 'lb-next'
      })), $('<div/>', {
        "class": 'lb-loader'
      }).append($('<a/>', {
        "class": 'lb-cancel'
      }).append($('<img/>', {
        src: this.options.fileLoadingImage
      }))))), $('<div/>', {
        "class": 'lb-dataContainer'
      }).append($('<div/>', {
        "class": 'lb-data'
      }).append($('<div/>', {
        "class": 'lb-details'
      }).append($('<span/>', {
        "class": 'lb-caption'
      }), $('<span/>', {
        "class": 'lb-number'
      })), $('<div/>', {
        "class": 'lb-closeContainer'
      }).append($('<a/>', {
        "class": 'lb-close'
      }).append($('<img/>', {
        src: this.options.fileCloseImage
      }))))))).appendTo($('body'));
      $('#lightboxOverlay').hide().on('click', function(e) {
        _this.end();
        return false;
      });
Re: Стиль программирования в JavaScript
От: boot  
Дата: 20.06.12 17:07
Оценка: +3 -4
Здравствуйте, pose, Вы писали:

P>Привет.


P>Не приходилось ковыряться в готовых javascript фрейморках. обычно просто подключал и юзал.

P>но вот захотел в lightbox поменят 2 дива местами. открыл js файл и ахнул

P>скажите это нормальные стиль писания на жаваскрипте?

P>по мне после с++ разит глаза кол-во скобок и все одним куском

Млин... Это же стиль jQuery... Нашли куда смотреть. Порядочные люди это чудо стороной обходят.
Жизнеспособность прямо пропорциональна простоте!
Re: Стиль программирования в JavaScript
От: Temoto  
Дата: 20.06.12 17:09
Оценка:
P>Привет.

P>Не приходилось ковыряться в готовых javascript фрейморках. обычно просто подключал и юзал.

P>но вот захотел в lightbox поменят 2 дива местами. открыл js файл и ахнул

P>скажите это нормальные стиль писания на жаваскрипте?

P>по мне после с++ разит глаза кол-во скобок и все одним куском

P>
P>Lightbox.prototype.build = function() {
P>      var $lightbox,
P>        _this = this;
P>      $("<div>", {
P>        id: 'lightboxOverlay'
P>      }).after($('<div/>', {
P>        id: 'lightbox'
P>      }).append($('<div/>', {
[...]
P>      }))))))).appendTo($('body'));
P>      $('#lightboxOverlay').hide().on('click', function(e) {
P>        _this.end();
P>        return false;
P>      });
P>


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

Более менее объективные недостатки: каждый $('<div/>') делает DOM createElement, элементы создаются одним синтаксисом, а аттрибуты к ним довешиваются другим, много уровней вложенности никак не отражено отступами.

А ведь можно document.createElement('DIV').innerHTML = '<div class=foo><div id=bar>'; Легко читать, легко что-нибудь дописать, верстальщики скажут спасибо, DOM лишний раз не дёргается, jquery для создания элементов окна вообще не нужен.
Re[2]: Стиль программирования в JavaScript
От: pose  
Дата: 20.06.12 17:15
Оценка:
Здравствуйте, boot, Вы писали:

B>Здравствуйте, pose, Вы писали:


P>>Привет.


P>>Не приходилось ковыряться в готовых javascript фрейморках. обычно просто подключал и юзал.

P>>но вот захотел в lightbox поменят 2 дива местами. открыл js файл и ахнул

P>>скажите это нормальные стиль писания на жаваскрипте?

P>>по мне после с++ разит глаза кол-во скобок и все одним куском

B>Млин... Это же стиль jQuery... Нашли куда смотреть. Порядочные люди это чудо стороной обходят.


ну т.е. в jQuery — это образец как обычно пишется код?

зы. а что вместо джеквери предложить можете? вот мне нужна фотогаллерея на сайте
Re[2]: Стиль программирования в JavaScript
От: pose  
Дата: 20.06.12 17:18
Оценка:
Здравствуйте, Temoto, Вы писали:

P>>Привет.


P>>Не приходилось ковыряться в готовых javascript фрейморках. обычно просто подключал и юзал.

P>>но вот захотел в lightbox поменят 2 дива местами. открыл js файл и ахнул

P>>скажите это нормальные стиль писания на жаваскрипте?

P>>по мне после с++ разит глаза кол-во скобок и все одним куском


T>Нет, это jquery головного мозга. Это адская нечитабельная неподдерживаемая каша. Ни в каком языке такой код нельзя назвать нормальным.


T>Более менее объективные недостатки: каждый $('<div/>') делает DOM createElement, элементы создаются одним синтаксисом, а аттрибуты к ним довешиваются другим, много уровней вложенности никак не отражено отступами.


T>А ведь можно document.createElement('DIV').innerHTML = '<div class=foo><div id=bar>'; Легко читать, легко что-нибудь дописать, верстальщики скажут спасибо, DOM лишний раз не дёргается, jquery для создания элементов окна вообще не нужен.


и я про тоже. как мне тут поменять местами дивы. без поллитра не обойтись
Re: Стиль программирования в JavaScript
От: Пацак Россия  
Дата: 20.06.12 17:56
Оценка:
Здравствуйте, pose, Вы писали:

Javascript + jquery — это очень читабельно, понятно и просто! (с) Mamut
Ку...
Re: Стиль программирования в JavaScript
От: silverwolf  
Дата: 20.06.12 18:03
Оценка:
Здравствуйте, pose, Вы писали:

P>
P>Lightbox.prototype.build = function() {
P>      var $lightbox,
P>        _this = this;
P>      $("<div>", {
P>        id: 'lightboxOverlay'
P>      }).after($('<div/>', {
P> …
P>      }))))))).appendTo($('body'));
P>      $('#lightboxOverlay').hide().on('click', function(e) {
P>        _this.end();
P>        return false;
P>      });
P>


P>скажите это нормальные стиль писания на жаваскрипте?

Нет, ни капли не нормальный! Скорее всего это писал один из тех кто считает что jQuery — это и есть javascript.
В общем подходы такие как классы через прототипы, чейнинг довольно часто используются. Но как правило это выглядит куда проще.
Вот пример чейнинга, немного по лучше http://underscorejs.org/#chain
Re[2]: Стиль программирования в JavaScript
От: silverwolf  
Дата: 20.06.12 18:07
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Здравствуйте, pose, Вы писали:


П>Javascript + jquery — это очень читабельно, понятно и просто! (с) Mamut

Проблемы не в языках, а в головах (c) Не_помню_кто
Re: Стиль программирования в JavaScript
От: os24ever
Дата: 20.06.12 18:24
Оценка:
P>скажите это нормальные стиль писания на жаваскрипте?

Вот правильный стиль: http://github.com/leprosus/js-small/
Re[2]: Стиль программирования в JavaScript
От: Пацак Россия  
Дата: 20.06.12 18:38
Оценка:
Здравствуйте, os24ever, Вы писали:

O>Вот правильный стиль: http://github.com/leprosus/js-small/


Нда?

  Скрытый текст
        unbind: function(type, callback){
            this.each(function(object){
                if(object.events){
                    if(type){
                        if(typeIn(type, 'string')) type = type.replace(/\s+/g, '').split(',');
                        if(typeIn(type, 'array')){
                            type = small.lower(small.trim(type));
                            if(small.contain(type, eventList))
                                small.each(type, function(current){
                                    if(object.events[current])
                                        if(callback){
                                            var events = object.events[current], runFlag = true;
                                            small.each(events, function(key, value){
                                                if(value.callback == callback && runFlag){
                                                    if(value.detachEvent) value.detachEvent('on'.concat(value), value.handler);
                                                    else if(value.removeEventListener) value.removeEventListener(value, value.handler, false);
                                                    delete events[key];
                                                    runFlag = false;
                                                }
                                            });
                                        }else{
                                            var owner = small(object);
                                            small.each(object.events[current], function(event){
                                                owner.unbind(current, event);
                                            });
                                            object.events[current] = [];
                                        }
                                });
                        }
                    }else{
                        var typeList = [];
                        small.each(object.events, function(key, value){
                            typeList[typeList.length] = key;
                        });
                        small(object).unbind(typeList);
                        object.events = {};
                    }
                }
            });
            return this;
        },
Ку...
Re[3]: Стиль программирования в JavaScript
От: Пацак Россия  
Дата: 20.06.12 18:39
Оценка:
Здравствуйте, silverwolf, Вы писали:

S>Проблемы не в языках, а в головах (c) Не_помню_кто


Кто б спорил. Но глядя на некоторые языки порой начинает казаться, что их создатели объявили охоту за головами.
Ку...
Re[2]: Стиль программирования в JavaScript
От: dimgel Россия https://github.com/dimgel
Дата: 20.06.12 18:55
Оценка: +3
Здравствуйте, boot, Вы писали:

B>Млин... Это же стиль jQuery... Нашли куда смотреть. Порядочные люди это чудо стороной обходят.


Порядочные люди обходят стороной jquey? Вот так новость. Кастую Мамута.
Re[4]: Стиль программирования в JavaScript
От: dimgel Россия https://github.com/dimgel
Дата: 20.06.12 18:56
Оценка: 6 (1) +1 :)
Здравствуйте, Пацак, Вы писали:

П>Здравствуйте, silverwolf, Вы писали:


S>>Проблемы не в языках, а в головах (c) Не_помню_кто


П>Кто б спорил. Но глядя на некоторые языки порой начинает казаться, что их создатели объявили охоту за головами.


Все языки полны по Тьюрингу, поэтому на любом можно написать нечитальный код (c) VladD2
Re[2]: Стиль программирования в JavaScript
От: Temoto  
Дата: 20.06.12 19:15
Оценка:
Здравствуйте, os24ever, Вы писали:

P>>скажите это нормальные стиль писания на жаваскрипте?


O>Вот правильный стиль: http://github.com/leprosus/js-small/


if(typeIn(node, 'string'))


Вызов собственной сложной функции вместо typeof node === 'string' это правильный стиль? Я понимаю, что там есть другие вызовы, когда проверяется несколько типов, но их очень немного.
Re[3]: Стиль программирования в JavaScript
От: Temoto  
Дата: 20.06.12 19:22
Оценка:
P>>>Привет.

P>>>Не приходилось ковыряться в готовых javascript фрейморках. обычно просто подключал и юзал.

P>>>но вот захотел в lightbox поменят 2 дива местами. открыл js файл и ахнул

P>>>скажите это нормальные стиль писания на жаваскрипте?

P>>>по мне после с++ разит глаза кол-во скобок и все одним куском

B>>Млин... Это же стиль jQuery... Нашли куда смотреть. Порядочные люди это чудо стороной обходят.


P>ну т.е. в jQuery — это образец как обычно пишется код?


Нет, это образец как обычно пишут люди, у которых jQuery вместо головы. jQuery – инструмент. Да, он толстый и распространяет порочные практики, даже в документации, у него есть свои особенности, как у любого другого инструмента. Но также с его помощью можно писать читаемый, поддерживаемый и относительно быстрый код. В данном случае проблема не в инструменте.

Собственно, в том же jQuery можно сделать $("<div class=foo><div id=bar>...") в один шаг.
Re[4]: Стиль программирования в JavaScript
От: vsb Казахстан  
Дата: 20.06.12 19:35
Оценка:
Здравствуйте, Temoto, Вы писали:

T>Собственно, в том же jQuery можно сделать $("<div class=foo><div id=bar>...") в один шаг.


Это парсинг строки на джаваскрипте == тормоза, за такой код в библиотеке надо расстреливать. В своём джаваскрипте на здоровье, а библиотека не должна вносить тормоза на ровном месте.
Re: Стиль программирования в JavaScript
От: о_О
Дата: 20.06.12 19:39
Оценка:
Здравствуйте, pose, Вы писали:

P>скажите это нормальные стиль писания на жаваскрипте?

да. у скриптеров культуры кодинга нет, потому всё есть сплошное говно
Re[5]: Стиль программирования в JavaScript
От: dimgel Россия https://github.com/dimgel
Дата: 20.06.12 20:05
Оценка:
Здравствуйте, vsb, Вы писали:

T>>Собственно, в том же jQuery можно сделать $("<div class=foo><div id=bar>...") в один шаг.


vsb>Это парсинг строки на джаваскрипте == тормоза, за такой код в библиотеке надо расстреливать. В своём джаваскрипте на здоровье, а библиотека не должна вносить тормоза на ровном месте.


Если скорость критична, то и $('<div/>') тоже недопустим, да и jquery вообще, а document.createElement() — наше всё.
Re[5]: Стиль программирования в JavaScript
От: Temoto  
Дата: 20.06.12 20:05
Оценка:
T>>Собственно, в том же jQuery можно сделать $("<div class=foo><div id=bar>...") в один шаг.

vsb>Это парсинг строки на джаваскрипте == тормоза, за такой код в библиотеке надо расстреливать. В своём джаваскрипте на здоровье, а библиотека не должна вносить тормоза на ровном месте.


Я думал, что такую строку jQuery отдаст браузеру через innerHTML. Если нет, то "не делайте так"
Re[5]: Стиль программирования в JavaScript
От: silverwolf  
Дата: 20.06.12 20:12
Оценка: -1 :)
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, Temoto, Вы писали:


T>>Собственно, в том же jQuery можно сделать $("<div class=foo><div id=bar>...") в один шаг.


vsb>Это парсинг строки на джаваскрипте == тормоза,

Если бы все было так просто
Суть в том, что код из оригинала топика активно работает с ДОМом, то есть может вызывать repaint/reflow/relayout/restyle. Пример Temoto, скорее всего, будет работать через DocumentFragments. И это вполне может перекрыть все "тормоза" парсинга строки, которые в современных браузерах не такие уж и тормоза. На небольших фрагментах эти "тормоза" будут не заметны, а вот вставки по элементно в ДОМ могут быть заметны даже на 5-10 элементах.

P.S. Хотя вы таки правильно воспользовались знаком "==", ибо "==" это еще не "==="
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.