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