Prinsip apa yang akan Anda sarankan untuk pengembangan perangkat lunak modern?
Pada pertemuan virtual terakhir Extreme Tuesday Club, kami membahas apakah prinsip SOLID sudah ketinggalan zaman . Belum lama berselang saya mendorong pidato lelucon tentang topik ini, jadi salah satu penyelenggara pertemuan bertanya kepada saya apakah saya tidak setuju dengan SOLID, apa yang akan saya gantikan dengannya. Kebetulan saya sudah memikirkan hal ini untuk sementara waktu, jadi saya memutuskan untuk menawarkan lima prinsip saya, dari mana akronim CUPID keluar .
Artikel ini bukan tentang prinsip-prinsip tersebut, ini akan menjadi posting saya selanjutnya. Artikel ini adalah tentang mengapa menurut saya mereka dibutuhkan. Saya ingin menceritakan keseluruhan cerita dan menjelaskan mengapa saya tidak pernah membeli SOLID. Mari kita bicarakan.
Mengapa setiap item SOLID salah
PubConf diciptakan sebagai semacam pesta tambahan untuk konferensi NDC. Seperti namanya, tempat itu berlangsung di sebuah pub. Beberapa pembicara tampil dalam gaya Ignite - 20 slide, 15 detik per slide, ikuti otomatis - dan penonton mengaum, bertepuk tangan, mendorong, dan terima kasih sesuai dengan lokasinya. Pemenangnya mendapatkan sesuatu, semua orang bersenang-senang.
Beberapa tahun yang lalu saya diundang untuk berbicara di acara PubConf di London. Saya suka tantangan berbicara terbatas. Saya memikirkan tentang prinsip-prinsip SOLID Robert Martin untuk waktu yang lama , dan tampak lucu bagi saya untuk menyangkal masing-masing prinsip ini sambil mencoba untuk tetap bersikap serius. Saya juga ingin menyarankan alternatif untuk setiap 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 , - ? ? , .