Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Библиотечка . (https://javascript.ru/forum/project/6025-bibliotechka.html)

x-yuri 04.02.2010 17:25

Цитата:

Сообщение от Kolyaj
Для такого случая как раз нужно указывать reduceInit: 0, т.к. иначе в первой итерации sum будет равна ссылке на элемент. По сути можно и условие из filter туда же засунуть, это на любителя, я предпочитаю разбивать задачи на более мелкие более простые подзадачи.

подожди, я имел в виду с другой реализацией
var reduceValue = options.reduceInit;
for( var i=0, j=0; i<els.length; i++ ) { 
...
        if( options.reduce ) 
            reduceValue = options.reduce.call( options.scope, reduceValue, el, j );

и реализация стала проще. Можно добавить еще значение по умолчанию 0/пустая строка/whatever

Цитата:

Сообщение от Kolyaj
Это библиотечка, т.е. код с высокой реюзабельностью, поэтому для данного кода я ищу компромисс "эффективность кода -- максимально малый размер -- приемлемая читабельность"

а размер зачем? А как ты решения принимаешь? На глаз?Я пока рассчитываю, что, по-крайней мере в большинстве случаев, не имеет смысла жертвовать читабельностью ради производительности. В частности, если не пытаться реализовать поиск по сферическим селекторам в вакууме :)

Ну и я не говорил, что нужно воспринимать тот код, как готовые решения. Можно, например, просто парсинг селекторов вынести

Kolyaj 04.02.2010 17:33

Цитата:

Сообщение от x-yuri
я имел в виду с другой реализацией

Все-таки лучше оставить стандартное для reduce поведение, чтобы не путаться.

Цитата:

Сообщение от x-yuri
а размер зачем?

Хм, ну чтоб меньше был.

Цитата:

Сообщение от x-yuri
А как ты решения принимаешь? На глаз?

Разумеется всё сугубо субъективно и по настроению. Наутро встану -- перепишу :) Обсудить-то мне это не с кем :)

x-yuri 05.02.2010 08:36

Цитата:

Сообщение от Kolyaj
Разумеется всё сугубо субъективно и по настроению. Наутро встану -- перепишу

вот это мне и не нравиться. Ты ставишь читабельность на третье место, не зная, что это тебе дает на практике

Kolyaj 05.02.2010 08:55

Цитата:

Сообщение от x-yuri
вот это мне и не нравиться.

Ну для себя-то у меня всё обосновано, а больше мне некому обосновывать. Если хочешь, можешь форк сделать, а там и смержим что-нибудь :)

Цитата:

Сообщение от x-yuri
Ты ставишь читабельность на третье место

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

Цитата:

Сообщение от x-yuri
не зная, что это тебе дает на практике

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

x-yuri 05.02.2010 16:30

Цитата:

Сообщение от Kolyaj
Если хочешь, можешь форк сделать, а там и смержим что-нибудь

да я уже немного попробовал, пока что ты смержил только баг ;) Ну понятно, в общем-то, проиритеты разные. А вообще, хочу позже что-нибудь выложить. Пока рано

Octane 18.04.2010 18:35

Метод clone в http://alljs.ru/crossjs/source/lang/Array.js правильно работает только с одномерными массивами. Так и задумано?
var array1 = [[]];
var array2 = array1.slice(0);
alert([
    array1 === array2,
    array1[0] === array2[0]
]);

Kolyaj 18.04.2010 20:33

Цитата:

Сообщение от Octane
Так и задумано?

Да я, честно говоря, и не задумывался об этом ))

stopkran 10.09.2010 18:34

В файле Element.js в функции M.removeClass используется регэксп:

new RegExp('($|\\s)' + cl + '(?=\\s|$)', 'g')

Вероятно, в первой скобке вместо доллара должна быть крышка (^)?

Kolyaj 10.09.2010 21:39

stopkran,
спасибо, поправил. Неприятный баг.

stopkran 12.09.2010 07:43

А вот и небольшая критика M.addClass: http://ir2.ru/show-hide-toggle.aspx (там больше критики obj.style.display = "none", поэтому отдельная статья)


Часовой пояс GMT +3, время: 12:25.