Я медленно перемещаюсь с PHP5 на Python на некоторые личные проекты, и сейчас я люблю этот опыт. Прежде чем выбраться, чтобы спуститься по маршруту Питона, я посмотрел на Руби. То, что я заметил из сообщества рубинов, заключалось в том, что обезьяна-паттинг была общей и высоко оцененной. Я также наткнулся на много ужасных историй о испытаниях отладки ruby s/w, потому что кто-то включил относительно безвредную библиотеку, чтобы сделать небольшую работу, но которая исправила некоторый сильно используемый основной объект, никому не рассказывая.
Я выбрал Python для (среди других причин) его более чистого синтаксиса и того факта, что он может делать все, что может сделать Ruby. Python делает OO-щелчок намного лучше, чем PHP, и я все больше и больше читаю о принципах OO, чтобы улучшить это понимание.
В этот вечер я читал о принципах Robert Martin SOLID:
- S принцип ответственности,
- O ручка/закрытый принцип,
- L принцип замены iskov,
- I принцип сегрегации nterface и
- D принцип инверсии вершин
В настоящее время я до O: ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ (КЛАССЫ, МОДУЛИ, ФУНКЦИИ И Т.Д.) ДОЛЖНЫ БЫТЬ ОТКРЫТЫ ДЛЯ РАСШИРЕНИЯ, НО ЗАКРЫТЫ ДЛЯ МОДИФИКАЦИИ.
Моя голова взволнована из-за конфликта между обеспечением последовательности в дизайне OO и всей палочкой для обезьян. Я понимаю, что его можно сделать в Python. Я также понимаю, что быть "питоническим" - это следовать общим, хорошо проверенным, лучшим практикам и принципам.
То, что я хотел бы знать, - это мнение сообщества о двух противоположных предметах:, как они взаимодействуют, когда лучше всего использовать один над другим, следует ли использовать исправление обезьян в все... надеюсь, вы можете предоставить мне резолюцию.