Как стать автором
Обновить
2
0
zephyr @zephyr

Пользователь

Отправить сообщение
Из аналогов можете посмотреть еще вот это github.com/nogizhopaboroda/f_context/
Погодите, то есть Вы перечитываете все скрипты перед запуском или как?
Вас, как человека, не вылазящего из дебагера, наверное не должно удивить, что как только, при пошаговой отладке, дебагер дойдет до исполнения функции, сгенерированной данной библиотекой, он откроет код всего сгенерированного модуля в новой вкладке и выставит курсор ровно на строчке с этой самой функцией.
Хотите, я для Вас маленький скринкаст запишу раз уж Вы на слово не верите?
Простите, а Вы код читали? Он вот здесь github.com/nogizhopaboroda/f_context/blob/master/src/f_context.coffee
Вас не затруднит показать мне в каком месте теряется доступ к замыканию и где функция создается неоднократно?
Без прописывания debugger никак. Но зачем Вам это? Я не потроллить, мне просто интересно.
По производительности — обычная рекурсия. Лупам, конечно, проигрывает, но как раз над этим я сейчас работаю.
Спасибо за комментарий. Постараюсь сделать лаконичнее в следующем релизе.
Скажите, а чем принципиально в данном случае прекомпилированный код отличается от сгенерированного на лету? И неужели установить расширение для Coffee и затем прекомпилировать файл удобнее и легче чем просто подключить библиотеку (при том что она весит 11к не пожатая)?
Автозаменяемый на лету код очень сложно дебажить и предсказать его поведение

Конкретно в случае данной библиотеки — вы заблуждаетесь. И вот почему:

1) Вот пример (Вы уж простите за этот преславутый факториал, но он самый короткий и наглядный):
  f_fact(0) -> 1
  f_fact(N) ->
    debugger
    N * f_fact(N - 1)

Сгенерированный библиотекой код:
...
var f_fact_local_0 = function(){ 
      return 1;
     };
var f_fact_local_1 = function(N){ 
      debugger; //вот ваш дебаггер, все нужные переменные на месте
      return N * f_fact(N - 1);
     };
var f_fact = function(){
  if(arguments[0] === 0 && arguments.length === 1){
	return f_fact_local_0();
}
if(arguments.length === 1){
	return f_fact_local_1(arguments[0]);
}
...

Весь код как на ладони.

2) Это ведь просто функция, у нее нет состояния, а значит ее результат выполнения зависит только от входных параметров, а значит ее очень легко покрыть тестами и ничего не надо дебажить.

Но спасибо за идею, дипишу в ридми про легкость отладки.
Не имя красит человека)

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность