Comments 24
Прежде, чем ответить «что это жуткий говнокод, так делать не стоит, да и это, просто-напросто, — невозможно.» подумай, сделай, и потом уже объясни чем это плохо.
А то напоминает "Программист отвечает «невозможно» каждый раз, когда ему лень".
А то напоминает "Программист отвечает «невозможно» каждый раз, когда ему лень".
+7
> Скорее всего, мне даже никогда не придется воспользоваться таким инструментом, но…
Легковесный профайлинг приложения, особенно комплексного с кучей скрытых кейсов, как раз таки подходящая задача для описанного подхода.
Легковесный профайлинг приложения, особенно комплексного с кучей скрытых кейсов, как раз таки подходящая задача для описанного подхода.
+1
Вариации на тему…
На шарпе с использованием «using»
На Ruby
Недавно в Ruby натыкался на некий аналог «using» в шарпе, но потерял ссылку (было неактуально). Если кто предложит свой вариант, буду благодарен.
На шарпе с использованием «using»
using(SomeProfiler.Instance.LogCallFor("MyFunction(some, params, etc)"))
{
// Execute some stuff
}
На Ruby
class Object
alias :to_s_old :to_s
def to_s
begin
# Here goes logging code (before call)
self.to_s
# Here goes logging code (after call and normal termination)
rescue
# Here goes logging code (after call and termination w/ exception)
end
end
Недавно в Ruby натыкался на некий аналог «using» в шарпе, но потерял ссылку (было неактуально). Если кто предложит свой вариант, буду благодарен.
+1
Ошибка в блоке для Ruby. Должно быть так:
class Object
alias :to_s_old :to_s
def to_s
begin
# Here goes logging code (before call)
self.to_s_old
# Here goes logging code (after call and normal termination)
rescue
# Here goes logging code (after call and termination w/ exception)
end
end
+1
Вторую строку не понял (не знаком с Руби), а вот остальные приму к сведению. Чуть позже сделаю как-то так:
addCallListener(f, {
before: function(){},
afterComplete: function(){}, // вызывается, если нет исключений
after: function(){}, // вызываемся всегда
error: function(){},
});
0
* after: function(){}, // вызывается всегда
0
> Вторую строку не понял (не знаком с Руби)
Вы про «alias»? Это создание еще одного псевдонима для функции. Нужно, чтоб оригинальный вариант функции была возможность вызвать. Новое определение функции «to_s» перекроет вызов оригинальной функции для всех, кроме нашего профайлера.
Вы про «alias»? Это создание еще одного псевдонима для функции. Нужно, чтоб оригинальный вариант функции была возможность вызвать. Новое определение функции «to_s» перекроет вызов оригинальной функции для всех, кроме нашего профайлера.
0
Я конечно извиняюсь, но вы изобрели простейший декоратор/mock
+1
Странный тут народ в коментах… Не важно изобрел/не изобрел. Интересна имплементация в данном конкретном случае.
А почему не используете Array.prototype.slice.call(arguments)? В вашем случае зачем-то объект создается…
[].slice.call(arguments)
А почему не используете Array.prototype.slice.call(arguments)? В вашем случае зачем-то объект создается…
+1
а вот в оформлении планига для jquery
mabp.kiev.ua/2010/02/07/eventify/
mabp.kiev.ua/2010/02/07/eventify/
0
Sign up to leave a comment.
Эмуляция события вызова функции