Die Geschichte der Entstehung von CUPID (Kritik an SOLID)

Welche Prinzipien würden Sie für die moderne Softwareentwicklung vorschlagen?





Beim letzten virtuellen Treffen des Extreme Tuesday Club haben wir diskutiert, ob die SOLID-Prinzipien veraltet sind . Vor nicht allzu langer Zeit habe ich eine Scherzrede zu diesem Thema gehalten, und einer der Organisatoren des Meetups fragte mich, ob ich mit SOLID nicht einverstanden wäre. Womit würde ich ihn ersetzen? So kam es, dass ich bereits eine Weile darüber nachgedacht hatte, und beschloss, fünf meiner Prinzipien anzubieten, aus denen das Akronym CUPID hervorging .





In diesem Artikel geht es nicht um diese Prinzipien, dies wird mein nächster Beitrag sein. In diesem Artikel geht es darum, warum ich denke, dass sie gebraucht werden. Ich möchte die ganze Geschichte erzählen und erklären, warum ich SOLID noch nie gekauft habe. Lass uns darüber reden.





Warum ist jedes FESTE Element falsch?

PubConf wurde als eine Art Afterparty für NDC-Konferenzen erfunden. Wie der Name schon sagt, findet der Ort in einer Kneipe statt. Mehrere Lautsprecher treten im Ignite- Stil auf - 20 Folien, 15 Sekunden pro Folie, automatische Verfolgung - und das Publikum brüllt, klatscht, stößt und bedankt sich je nach Standort. Der Gewinner bekommt etwas, jeder hat eine tolle Zeit.





Vor einigen Jahren wurde ich eingeladen, auf der PubConf in London zu sprechen. Ich mag die begrenzte Herausforderung beim Sprechen. Ich habe lange über Robert Martins SOLID-Prinzipien nachgedacht , und es schien mir lustig, jedes dieser Prinzipien zu widerlegen, während ich versuchte, ein ernstes Gesicht zu behalten. Ich wollte auch für jeden Artikel eine Alternative vorschlagen.





: , , , , , - 5 . 15 , 45 . - 20 !





, , . -, , ( , ). -, : . " ""?", , .





SpeakerDeck , , , , .





, , . , 15 , , 15 , , 15 . ? !





(SRP)

SRP , . , " ". " " ( “Pointlessly Vague Principle” - . ). " "? DataProcessor ETL (extract-transform-load - - - ) ? , , , , , .





, " ". , - , . , - , - . , /, /, , , .





: " ?". , , , . , , , , .





, "" . , , , . , . , - , - (SRP). - , .





- (OCP)

, , , , , .





, :





  • : , C++ 1990 . .





  • : , IDE ( Smalltalk), .





  • , : - , ( , , , RCS SCCS ( - . )), . , . , . CVS, , , , . CVS, (changeset-based version control.)





, , , : , - ! , , , , , , . , .





" ". (Cruft Accretion Principle) (́(. accrētiō «, » accrēscere «») — . - . )





- "", , , . - . , ! , , , , , .





(LSP)

, , . , - , , , , .





, , LSP (""), , "" "", " " , 1980 , " (is-a)" " (has-a)" .





, , : "-- (act-like-a)", "-- (sometimes-be-used-as)" "---- (pass-off-as-a-if-you-squint)"; , , , , , . , , " ", .





(ISP)

- . - , , , . , , , God object, Xerox. Job



. , , , , " " . :





  • , Job



    .





  • , , , Job



    , , .





  • Job



    , . (, .)





, , . .





: " , ", " ".





, (God-). ( ) ( , ). , , " , !".





: , " " (Stable Door Principle). (, - . , - . ) , , , .





, . - , , Working Effectively With Legacy Code.





(DIP)

DIP . , , , .





. , , , . , main



.





, , J2EE, OSGi, Spring " ", - . J2EE , - EJB, servlets, web domains, remote service locations, - .





, , , DI , . , " DI " , , .





, , , . - , - , .





« , »

SOLID, , - , , , , . . ? , SOLID , , , , « , ».





, , 30 , - ? ? , .








All Articles