Обезьяна-исправления Vs. S.O.L.I.D. принципы?

Я медленно перехожу с PHP5 на Python в некоторых личных проектах, и в настоящее время мне нравится этот опыт. Прежде чем пойти по маршруту Python, я посмотрел на Ruby. Что я заметил в сообществе ruby, так это то, что исправление обезьян было распространено и высоко ценилось. Я тоже наткнулся намного ужасных историй, касающихся испытаний отладки ruby ​​s / w, потому что кто-то включил относительно безвредную библиотеку, чтобы выполнить небольшую работу, но которая исправила какой-то сильно используемый основной объект, не сказав никому.

Я выбрал Python (среди прочих причин) из-за его более чистого синтаксиса и того факта, что он может делать все, что может Ruby. Python делает OO click намного лучше, чем когда-либо был PHP, и я все больше и больше читаю о принципах OO, чтобы улучшить это понимание.

Этим вечером я читал оРоберт Мартин SOLID принципы:

Sпринцип единой ответственности,Oручка / закрытый принцип,Lпринцип замещения исков,Iпринцип сегрегации по поверхности иDпринцип инверсии зависимостей

Я в настоящее время доO: ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ (КЛАССЫ, МОДУЛИ, ФУНКЦИИ, ETC.) ДОЛЖНО БЫТЬ ОТКРЫТО ДЛЯ РАСШИРЕНИЯ, НО ЗАКРЫТО ДЛЯ МОДИФИКАЦИИ.

Моя голова в замешательстве из-за конфликта между обеспечением согласованности в дизайне ОО и всей этой штуковиной. Я понимаю, что в Python можно делать мартышки-патчи. Я также понимаю, что быть «питоном» - значит следовать общепринятым, хорошо проверенным, наилучшим методам и принципам.

Что я хотел бы знать, так это мнение сообщества по двум противоположным темам; как они взаимодействуют, когда лучше всего использовать одно поверх другого, нужно ли вообще делать исправления для обезьян ... надеюсь, вы сможете решить эту проблему для меня.

Ответы на вопрос(1)

Ваш ответ на вопрос