CUPID(SOLIDの批判)の出現の歴史

最新のソフトウェア開発のためにどのような原則を提案しますか?





Extreme Tuesday Clubの前回の仮想会議でSOLIDの原則が時代遅れであるかどうかについて話し合いました少し前に私はこのトピックについて冗談を言ったので、ミートアップの主催者の1人が、私がSOLIDに同意しないかどうか、彼を何に置き換えるかを尋ねました。たまたまこれについてはしばらく考えていたので、頭字語CUPIDが出てきた5つの原則を提示することにしました





この記事はこれらの原則に関するものではありません。これが私の次の投稿になります。この記事は、なぜそれらが必要だと思うのかについてです。全体像を伝え、SOLIDを購入したことがない理由を説明したいと思います。では、それについて話しましょう。





すべてのSOLIDアイテムが間違っているのはなぜですか

PubConfは、NDC会議の一種のアフターパーティーとして考案されました。名前が示すように、場所はパブで行われます。いくつかのスピーカーがIgniteスタイルで演奏します— 20スライド、スライドあたり15秒、自動フォロー—そして聴衆は場所に応じて吠え、拍手、突き、そして感謝します。勝者は何かを手に入れ、誰もが素晴らしい時間を過ごします。





数年前、私はロンドンで開催されたPubConfイベントで講演するよう招待されました。私は限られた話の挑戦が好きです。私はロバート・マーチンのSOLIDの原則について長い間考えていましたが、真面目な顔を保ちながら、これらの原則のそれぞれに反論するのは面白そうでした。また、各アイテムの代替案を提案したいと思いました。





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