Привел, но могу поконкретнее...
Sumo 03.11.2015 17:00
Возможность добавить своим методы или поменять поведение встроенных классов в динамических языках называют monkey patching (манкипатчинг). Достоинства и недостатки манкипатчинга в интернете обсуждают регулярно.
Мне в манкипатчинге не нравятся две вещи:
— У объектов есть поведение (интерефейс). Фактически это жесткий контракт, который жестко фиксирует свойства объекта. Любой, кто взаимодействует с объектом должен иметь гарантию, что контракт не поменяется в процессе взаимодействия с объектом. Манкипатчинг нарушает нарушает контракт и придает объекту свойства, которых у него не было. С точки зрения ООП-подхода это плохо.
— Допустим, что мы разрешили нарушать контракт. Тогда возникает вопрос: что нам делать, если два объекта добавили в системный класс метод с одним и тем же именем, но с разным интерфейсом (входными и выходными параметрами или логикой получения результата). Мы сразу получили некорректную работу одного из объектов, потому что интерфейс не тот, который он ожидает. Отлаживать такие проблемы будет крайне сложно: понять кто и в каком порядке напихал методы в системные классы та еще задачка.
В итоге. Польза от такой штуки сомнительна, а проблем масса. И привычка (как пишет ПАФ) проблемы с отладкой не решит.
- Parser 3.4.4 RC, moko [M] 27.10.2015 15:16
- Ответ, G_Z [M] 12.11.2015 20:03
- ^hash.sort[key;value]{string-key-maker}[[asc|desc]] — вылезла несовместимость, Sumo [M] 10.11.2015 14:30 / 10.11.2015 14:36
- Ответ, moko [M] 10.11.2015 14:50
- Ответ, moko [M] 10.11.2015 14:36
- Спасибо за проведённую работу!, stur 09.11.2015 10:32
- Обновлнение, Евгений Химич 01.11.2015 23:08
- Класс, Parser стал заметно живее, как проект. (-), andylars 28.10.2015 18:19 / 28.10.2015 18:20
- Ответ, 28.10.2015 18:17
- Unhandled exception 0xC0000005 at 0x1000192A, G_Z [M] 27.10.2015 16:42
- Ответ, moko [M] 27.10.2015 16:56
- Падает на запросе, G_Z [M] 27.10.2015 17:26 / 27.10.2015 17:51
- Ответ, moko [M] 27.10.2015 17:52
- Ответ, G_Z [M] 27.10.2015 17:53
- Ответ, moko [M] 27.10.2015 18:03
- Ответ, G_Z [M] 27.10.2015 18:08
- Ответ, moko [M] 27.10.2015 18:38
- Странно, G_Z [M] 27.10.2015 16:59
- Ура!, G_Z [M] 27.10.2015 15:53
- Ответ, moko [M] 27.10.2015 15:59
- Ответ, G_Z [M] 27.10.2015 16:15
- Ответ, moko [M] 27.10.2015 16:17
- Ответ, G_Z [M] 27.10.2015 16:20