parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Привел, но могу поконкретнее...

Sumo 03.11.2015 17:00

Возможность добавить своим методы или поменять поведение встроенных классов в динамических языках называют monkey patching (манкипатчинг). Достоинства и недостатки манкипатчинга в интернете обсуждают регулярно.

Мне в манкипатчинге не нравятся две вещи:
— У объектов есть поведение (интерефейс). Фактически это жесткий контракт, который жестко фиксирует свойства объекта. Любой, кто взаимодействует с объектом должен иметь гарантию, что контракт не поменяется в процессе взаимодействия с объектом. Манкипатчинг нарушает нарушает контракт и придает объекту свойства, которых у него не было. С точки зрения ООП-подхода это плохо.
— Допустим, что мы разрешили нарушать контракт. Тогда возникает вопрос: что нам делать, если два объекта добавили в системный класс метод с одним и тем же именем, но с разным интерфейсом (входными и выходными параметрами или логикой получения результата). Мы сразу получили некорректную работу одного из объектов, потому что интерфейс не тот, который он ожидает. Отлаживать такие проблемы будет крайне сложно: понять кто и в каком порядке напихал методы в системные классы та еще задачка.

В итоге. Польза от такой штуки сомнительна, а проблем масса. И привычка (как пишет ПАФ) проблемы с отладкой не решит.