Обезьяна-исправления 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 можно делать мартышки-патчи. Я также понимаю, что быть «питоном» - значит следовать общепринятым, хорошо проверенным, наилучшим методам и принципам.
Что я хотел бы знать, так это мнение сообщества по двум противоположным темам; как они взаимодействуют, когда лучше всего использовать одно поверх другого, нужно ли вообще делать исправления для обезьян ... надеюсь, вы сможете решить эту проблему для меня.