La historia del surgimiento de CUPID (crítica de SOLID)

¿Qué principios sugeriría para el desarrollo de software moderno?





En la última reunión virtual de Extreme Tuesday Club, discutimos si los principios SOLID estaban desactualizados . No hace mucho publiqué un discurso de broma sobre este tema, así que uno de los organizadores de la reunión me preguntó si no estaba de acuerdo con SOLID, con qué lo reemplazaría. Dio la casualidad de que ya lo había pensado durante un tiempo, así que decidí ofrecer cinco de mis principios, de los que salió el acrónimo CUPID .





Este artículo no trata sobre estos principios, esta será mi próxima publicación. Este artículo trata sobre por qué creo que son necesarios. Me gustaría contar toda la historia y explicar por qué nunca compré SOLID. Hablemos de eso.





¿Por qué todos los elementos SÓLIDOS son incorrectos?

PubConf se inventó como una especie de afterparty para conferencias NDC. Como su nombre indica, el lugar tiene lugar en un pub. Varios oradores actúan al estilo Ignite (20 diapositivas, 15 segundos por diapositiva, seguimiento automático) y la audiencia ruge, aplaude, empuja y agradece según la ubicación. El ganador recibe algo, todos se lo pasan en grande.





Hace varios años me invitaron a hablar en el evento PubConf en Londres. Me gusta el desafío de hablar limitado. Pensé en los principios SÓLIDOS de Robert Martin durante mucho tiempo , y me pareció divertido refutar cada uno de estos principios mientras trataba de mantener una cara seria. También quería sugerir una alternativa para cada artículo.





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