Monkey-Patching Vs. SOLIDE. Prinzipien?

Ich bin bei einigen persönlichen Projekten langsam von PHP5 auf Python umgestiegen und bin derzeit begeistert von dieser Erfahrung. Bevor ich mich für die Python-Route entschied, schaute ich Ruby an. Was mir in der Ruby-Community aufgefallen ist, ist, dass das Patchen von Affen weit verbreitet und hoch angesehen ist. Ich bin auch auf ein @ gestoßMeng von Horrorgeschichten über die Versuche, Ruby s / w zu debuggen, weil jemand eine relativ harmlose Bibliothek mitbrachte, um einen kleinen Job zu erledigen, die jedoch einige stark genutzte Kernobjekte reparierte, ohne es jemandem mitzuteilen.

Ich habe mich für Python entschieden, unter anderem wegen seiner saubereren Syntax und der Tatsache, dass es alles kann, was Ruby kann. Python macht OO Clicks viel besser als PHP es jemals getan hat, und ich lese mehr und mehr über OO-Prinzipien, um dieses bessere Verständnis zu verbessern.

An diesem Abend habe ich über @ geles Robert Martins SOLID Prinzipien:

S Prinzip der einmaligen Verantwortung,O Stift / geschlossenes Prinzip,Liskov Substitutionsprinzip,IInterface-Segregation-Prinzip undDrinzip der Abhängigkeitsinversi

Ich bin derzeit bis zuO: SOFTWARE-EINHEITEN (KLASSEN, MODULE, FUNKTIONEN usw.) SOLLTEN FÜR ERWEITERUNGEN GEÖFFNET, ABER FÜR ÄNDERUNGEN GESCHLOSSEN WERDEN.

Mein Kopf dreht sich um den Konflikt zwischen der Sicherstellung der Konsistenz im OO-Design und der gesamten Sache mit den Affen-Patches. Ich verstehe, dass es möglich ist, Affen-Patches in Python auszuführen. Ich verstehe auch, dass "pythonisch" das Befolgen allgemeiner, erprobter, bewährter Vorgehensweisen und Prinzipien ist.

Was ich gerne wissen würde, ist die Meinung der Community zu den beiden gegensätzlichen Themen; wie sie zusammenarbeiten, wann es am besten ist, eine über die andere zu verwenden, ob das Patchen der Affen überhaupt durchgeführt werden soll ... hoffentlich können Sie mir eine Lösung für die Angelegenheit anbieten.

Antworten auf die Frage(16)

Ihre Antwort auf die Frage