Сколько строк кода будет сохранено с использованием JQuery вместо прямого JavaScript? - PullRequest
3 голосов
/ 25 августа 2009

Может быть, кто-то, более знакомый с темой, может помочь мне упростить или правильно написать вопрос. Мы ищем метрики в JQuery или даже в других JS Frameworks по сравнению с использованием простого javascript. Я не верю в строки метрики кода, никогда не верю, но я не могу думать ни о чем другом, чтобы это измерить.

Function Points (jquery) = Jquery-LOC
Function Points (JS) = JS-LOC

Ответы [ 10 ]

11 голосов
/ 25 августа 2009

Чтобы прикрепить обработчик кликов с помощью стандартного JavaScript, вы можете попробовать что-то вроде этого:

var myelement = document.getElementById("clickme");
function myClickHandler (evt) {
  var evt = evt || event; // ie uses a global instead of
                          // passing an object as a param
  (evt.target || evt.srcElement).style.width="110px";

}
if (myelement.addEventListener) {
   myelement.addEventListener("click", myClickHandler, false);
} else if(myelement.attachEvent) {
   myelement.attachEvent("onclick", myClickHandler);
} else if(typeof myelement.onclick === "function") {
    (function () {
      var oldfunc = myelement.onclick; 
      myelement.onclick = function (evt) {
          var evt = evt || event;
          oldfunc(evt);
          myClickHandler(evt);
      }
    })()
} else {
   myelement.onclick = myClickHandler;
}

или попробуйте сделать что-то подобное, используя jquery

jQuery("#clickme").click(function(evt){ jQuery(evt.target).css("width",110); });

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

Это был бы очень хороший аргумент, и в этом суть библиотеки вроде jquery. Вы экономите время, не писать этот подробный шаблон, который абсолютно необходим, если вы хотите, чтобы ваш код работал в разных браузерах. Вы экономите время, не отлаживая его. Вы экономите время, если вам нужно отладить его, вам просто нужно исправить одну функцию в jquery и отправить отчет об ошибке для следующей версии. Если что-то не так с кодом привязки события, то только один парень должен изменить один бит кода, а не тысячи людей, которым нужно изменить миллионы бит кода. И когда кто-то указывает на то, что вы должны проверить addEventListener первых, точка становится спорным, так как JQuery делает уже установленную «правильную» вещь. И если этого не произойдет, это будет в следующей версии.

jQuery не поможет вам в действительно сложных проблемах, специфичных для предметной области, но для проработки каждодневных манипуляций с домом лучше использовать библиотечную функцию, чем пытаться заставить ее «приблизиться к цели». Слишком много торчащих межбраузерных осколков и слишком много глупых многословных APIS, и это слишком глупо, чтобы решать проблемы, которые уже были решены, снова и снова.

Вам нужна НЕКОТОРАЯ разновидность библиотеки (не обязательно jquery), чтобы оставаться в здравом уме.

Теперь сколько времени и усилий вы экономите, точно? Кто знает? это неизмеримо Сколько раз вам приходится связывать обработчик событий? Сколько раз вам приходилось делать какие-либо другие вещи, которые jQuery предоставляет в простой функции? Одно сильно зависит от другого.

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

3 голосов
/ 25 августа 2009

Вы правы в том, что сомневаетесь в строках метрики кода, хотя, если вы не учитываете сам jquery, это сэкономит существенные новые строки кода.

Что еще важнее, это уменьшит объем кода DOM-супа, который вам придется писать и тестировать вручную в 5 браузерах или около того. Это значительно экономит время и уменьшает количество ошибок.

2 голосов
/ 25 августа 2009

Это зависит от того, что вы пишете. Хотите больше точности? Ровно 12 строк.

1 голос
/ 25 августа 2009

Это сравнимое количество с длиной строки.

1 голос
/ 25 августа 2009

Используя JQuery или другие библиотеки JavaScript, ваше приложение будет иметь гораздо больше функциональных точек и гораздо больше строк кода. Зачем? Потому что вы будете делать вещи легко, которые вы не считали возможным или осуществимым до того, как начали использовать эти библиотеки. Это побудит вас писать больше функций, а не наказывать вас за попытки, как программирование с нуля.

Они такие хорошие.

1 голос
/ 25 августа 2009

Как насчет того, насколько продуктивен разработчик? Насколько легко найти кого-то, кто поддержит кодовую базу?

1 голос
/ 25 августа 2009

Показатель «сэкономленное время» так же хорош, как и любой другой.

Используя jQuery, вы пишете меньше (я имею в виду, что это даже девиз jQuery!), Но LOC - нелепое измерение.

Причина, по которой я использую jQuery, заключается в совместимости браузера. Если мне не нужно писать это самому, я, очевидно, экономлю время.

0 голосов
/ 25 марта 2015

Я знаю, что это старый вопрос и не очень важный вопрос, но позвольте мне добавить свой ОП. Глядя на пример Брентона:

jQuery("#clickme").click(function(evt){ jQuery(evt.target).css("width",110); });

Если бы IE8 и ниже не было выше, то, очевидно, можно записать как:

document.getElementById('clickme').addEventListener('click', function(e){e.target.style.width = '110px';}, false);

При сравнении LOC никто не должен писать каждое приложение с чистого листа на чистом JavaScript, это более выполнимо с помощью jQuery, библиотеки общего назначения.

На ровном игровом поле вы можете сравнить два приложения: App-A с использованием jQuery + libs VS App-B с использованием чистых JS + libs. App-B, вероятно, будет использовать больше библиотек, чем App-A, что является lib, что означает меньше кода ядра Js, чем предполагалось.

Чтобы поместить все это в перспективу, библиотека общего назначения не общего назначения может быть около 0.?-4kB и может выполнять следующие действия, и поскольку это не 1, подходит для всех библиотек, которые будет справедливо включить в App- B:

getEl('clickme').ev('click',{ width: 110 });

jQuery, конечно, выигрывает с точки зрения меньшего количества строк по сравнению с JS, но разница заключается в подходе сравнения.

0 голосов
/ 25 августа 2009

Вопрос в принципе бессмыслен без контекста.

Если вы используете jQuery для выполнения чего-то в четыре строки, которые в противном случае заняли бы 20 строк, вы потерпите неудачу, добавив (в версии 1.3.2) 4376 строк jQuery для сохранения 16 строк собственного кода.

С другой стороны, если вы сохраняете написание 9000 строк кода с помощью jQuery, тогда вы получаете чистый выигрыш.

Может даже случиться, что 4376 строк для сохранения 16 строк того стоят, если вам понадобится три месяца, чтобы узнать, что необходимо для написания этих 16 строк. В качестве альтернативы, может быть, стоит потратить три месяца на то, чтобы выучить достаточно, чтобы избежать написания 9000 строк, в которых было бы 20.

Я думаю, вам нужен более сложный показатель.

0 голосов
/ 25 августа 2009

Я не думаю, что LOC также является очень применимым показателем, но возможность писать такие вещи, как $('#my_id') против document.getElementById('my_id'), имеет огромное значение в долгосрочной перспективе - даже в краткосрочной перспективе.

...