A história do surgimento de CUPID (crítica de SOLID)

Que princípios você sugeriria para o desenvolvimento de software moderno?





Na última reunião virtual do Extreme Tuesday Club, discutimos se os princípios SOLID estavam desatualizados . Não faz muito tempo, eu empurrei um discurso piada sobre esse assunto, então um dos organizadores do encontro me perguntou se eu discordo do SOLID, pelo que eu o substituiria. Acontece que eu já havia pensado nisso por um tempo, então resolvi oferecer cinco dos meus princípios, dos quais saiu a sigla CUPID .





Este artigo não é sobre esses princípios, este será meu próximo post. Este artigo explica por que acho que eles são necessários. Gostaria de contar toda a história e explicar por que nunca comprei SOLID. Vamos conversar a respeito disso.





Por que todos os itens SÓLIDOS estão errados

O PubConf foi inventado como uma espécie de festa pós-festa para as conferências da NDC. Como o nome sugere, o local acontece em um pub. Vários palestrantes tocam no estilo Ignite - 20 slides, 15 segundos por slide, acompanhamento automático - e o público ruge, bate palmas, empurra e agradece de acordo com o local. O vencedor ganha algo, todos se divertem muito.





Vários anos atrás, fui convidado para falar no evento PubConf em Londres. Gosto do desafio limitado de falar. Eu pensei sobre os princípios SOLID de Robert Martin por um longo tempo , e me pareceu engraçado refutar cada um desses princípios enquanto tentava manter uma cara séria. Também queria sugerir uma alternativa para cada item.





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