L'histoire de l'émergence de CUPID (critique de SOLID)

Quels principes suggéreriez-vous pour le développement de logiciels modernes?





Lors de la dernière réunion virtuelle de l' Extreme Tuesday Club, nous nous sommes demandé si les principes SOLID étaient dépassés . Il n'y a pas si longtemps, j'ai lancé un discours de blague sur ce sujet, alors l'un des organisateurs de la rencontre m'a demandé si j'étais en désaccord avec SOLID, par quoi pourrais-je le remplacer. Il se trouve que j'y avais déjà réfléchi depuis un moment, alors j'ai décidé de proposer cinq de mes principes, dont l'acronyme CUPID est sorti .





Cet article ne traite pas de ces principes, ce sera mon prochain article. Cet article explique pourquoi je pense qu'ils sont nécessaires. J'aimerais raconter toute l'histoire et expliquer pourquoi je n'ai jamais acheté SOLID. Parlons-en.





Pourquoi chaque article SOLID est-il faux

PubConf a été inventé comme une sorte d'afterparty pour les conférences NDC. Comme son nom l'indique, le lieu se déroule dans un pub. Plusieurs orateurs se produisent dans le style Ignite - 20 diapositives, 15 secondes par diapositive, suivi automatique - et le public hurle, applaudit, pousse et remercie en fonction du lieu. Le gagnant obtient quelque chose, tout le monde passe un bon moment.





Il y a plusieurs années, j'ai été invité à prendre la parole lors de l'événement PubConf à Londres. J'aime le défi de parler limité. J'ai longtemps réfléchi aux principes SOLID de Robert Martin, et cela m'a paru drôle de réfuter chacun de ces principes en essayant de garder un visage sérieux. Je voulais également suggérer une alternative pour chaque article.





: , , , , , - 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