Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Простой сортировщик HTML таблиц (https://javascript.ru/forum/project/21463-prostojj-sortirovshhik-html-tablic.html)

Octane 15.09.2011 13:19

Еще у меня из-за замыкания начинается паранойя:
proto = {
	method: function (…) {
		var a, b, c, d, …;
		Object.keys(…).forEach(function (…) {
			//к примеру, тут не нужны a, b, c, d
		});
	}
}

приходится выносить в отдельный метод:
proto = {
	_method: function (…) {
		//тут this → window
	},
	method: function (…) {
		var a, b, c, d, …;
		Object.keys(…).forEach(this._method);
	}
}

но метод в прототипе, ничего не делающий с this, кажется лишним, выносим его в отдельный объект:
utils = {
	method: function (…) {…}
}

proto = {
	method: function (…) {
		var a, b, c, d, …;
		Object.keys(…).forEach(utils.method);
	}
}

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

а можно было всего-лишь написать:
proto = {
	method: function (…) {
		var a, b, c, d, …, keys = Object.keys(…), i = keys.length;
		while (i--) {
			…
		}
	}
}


поэтому forEach использую, только когда действительно нужен локальный скоп, а еще в светлом будущем ожидается let

Kolyaj 15.09.2011 13:33

proto = {
    method: function (…) {
        var a, b, c, d, …, keys = Object.keys(…), i = keys.length;
        while (i--) {
            //к примеру, тут не нужны a, b, c, d
        }
    }
}

И в чём разница?

Octane 15.09.2011 13:38

Ну так они никуда не замыкаются, паранойя не наступает :D

Kolyaj 15.09.2011 13:42

А что меняется от того, замыкаются они или не замыкаются? Не пойму, откуда паранойя растёт.

Octane 15.09.2011 14:05

Да ничего страшного не происходит. Я понимаю, что разница будет заметна только в тестах, где 100500 раз одно и тоже повторяют, но просто зачем все эти лишние действия (создание функции, связь скопов, call, …) будут происходить, если используя while, их не будет.

float 16.09.2011 06:17

я тоже сначала заморачивался по этому поводу, а потом перестал, когда сравнил скорость...

x-yuri 25.09.2011 20:09

Цитата:

Сообщение от stopkran
Два года писал этот код,

с этим надо что-то делать... например, разобраться, все-таки, почему он не закончен. И что из этого всего стоило потраченных усилий, а что - нет

Цитата:

Сообщение от stopkran
О, я много где сэкономил на производительности! :-) Но вы всё равно не найдёте. Да я и сам сейчас не вспомню всего.

в результате имеем код, который желательно не менять. Либо надо осознавать, что изменения могут свести на нет усилия по оптимизации. Комментарии тогда надо было делать для таких неочевидных моментов. Собственно, это их основное назначение

вот, float, это правильный подход при борьбе с паранойей, я считаю :)

B~Vladi 26.09.2011 11:42

Цитата:

Сообщение от Octane
Да ничего страшного не происходит. Я понимаю, что разница будет заметна только в тестах, где 100500 раз одно и тоже повторяют, но просто зачем все эти лишние действия (создание функции, связь скопов, call, …) будут происходить, если используя while, их не будет.

О, я тоже параноик, круто.

stopkran 27.09.2011 16:11

Цитата:

Сообщение от x-yuri
в результате имеем код, который желательно не менять. Либо надо осознавать, что изменения могут свести на нет усилия по оптимизации. Комментарии тогда надо было делать для таких неочевидных моментов

В точку. Любые изменения этого кода приводят к ухудшению производительности. Он находится в состоянии устойчивого равновесия. Вещь в себе. На данном этапе.

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

x-yuri 27.09.2011 23:43

Цитата:

Сообщение от stopkran
И маховик начинает раскручиваться заново:

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


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