Добавить логгирование через monkey patching

Apr 15, 2011 17:40

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

overrideMethod(Autoclass.Map, ' ( Read more... )

Leave a comment

Comments 8

vova_g April 15 2011, 13:46:49 UTC
главное, два раза оверрайд не сделать

Reply

vova_g April 15 2011, 13:52:33 UTC
в смысле, одного и того же имени метода

Reply

gaidam April 15 2011, 13:54:23 UTC
ну можно это сделать покрасивее, мне было лень

Reply

vova_g April 15 2011, 13:55:20 UTC
все так говорят

Reply


antilamer April 15 2011, 20:19:04 UTC
Ха, а на хаскелле это тоже как два пальца. Надо всего-навсего параметризовать код монадой, принадлежащей к нужному тайпклассу! And I'm only half joking.

Reply

gaidam April 15 2011, 20:52:42 UTC
Я вот все думаю, как бы перейти от учебных примеров к чему-нибудь реалистичному, не найду для себя задачки.

Reply


vova_g May 13 2011, 14:28:27 UTC
манки патчинг в си:

#define startGenericSpan startGenericSpan_base
#include "tokenizer.c"
#undef startGenericSpan

struct Span *startGenericSpan(struct File *pf, const char *start) {
struct Span *s = startGenericSpan_base(pf, start);
printf("span");
return s;
}

Reply


Leave a comment

Up