Relevansi prinsip-prinsip SOLID

Prinsip SOLID pertama kali diperkenalkan pada tahun 2000 dalam artikel Prinsip Desain dan Pola Desain oleh Robert Martin, juga dikenal sebagai Paman Bob. 





Dua dekade telah berlalu sejak itu. Timbul pertanyaan - apakah prinsip-prinsip ini masih relevan? 





Ini adalah terjemahan dari artikel Paman Bob, yang diterbitkan pada Oktober 2020, di mana ia membahas relevansi prinsip-prinsip SOLID untuk pembangunan modern.       





Saya baru-baru ini menerima email dengan beberapa pertimbangan berikut:





Selama bertahun-tahun, pengetahuan tentang prinsip-prinsip SOLID telah menjadi standar saat perekrutan. Para kandidat diharapkan percaya diri dengan prinsip-prinsip ini. Namun, kemudian, salah satu manajer kami, yang hampir tidak pernah menulis kode lagi, bertanya-tanya apakah ini masuk akal. Dia berpendapat bahwa prinsip buka-tutup menjadi kurang penting, karena sebagian besar kita tidak lagi menulis kode untuk monolit besar. Dan membuat perubahan pada layanan mikro ringkas itu aman dan mudah.





Prinsip substitusi Liskov sudah lama ketinggalan zaman, karena kita tidak lagi memperhatikan warisan seperti yang kita lakukan 20 tahun yang lalu. Saya pikir kita harus mempertimbangkan posisi Dan North di SOLID - “Tulis Kode Sederhana”





Sebagai tanggapan, saya menulis surat berikut.





Prinsip-prinsip SOLID tetap relevan hari ini seperti 20 tahun yang lalu (dan sebelum itu). Karena perangkat lunak tidak banyak berubah selama bertahun-tahun, yang pada gilirannya merupakan konsekuensi dari fakta bahwa perangkat lunak tidak banyak berubah sejak 1945, ketika Turing menulis baris kode pertama untuk komputer elektronik. Perangkat lunak masih operator if



, loop, while



dan operasi penugasan - Urutan, Seleksi, Iterasi .    





Setiap generasi baru suka berpikir bahwa dunia mereka sangat berbeda dengan dunia generasi sebelumnya. Setiap generasi baru salah tentang ini, yang mereka ketahui segera setelah generasi berikutnya datang untuk memberi tahu mereka betapa banyak hal telah berubah. <tertawa>





Jadi, mari kita membahas prinsip-prinsipnya secara berurutan. 





SRP - Single Responsibility Principle .





, . , . 





, . - . SQL- . , , , . , , , .  





. , , . 





, ( , , ). SRP - “ ”. . SRP - .  





OSP - Open-Closed Principle -





, . 





, - , . , , , . , , ? if



, , ?





... ? - , ? !





.





(. , , )





. ó - . , , . - “ ”. . , . .





LSP - Liskov Substitution Principle





, , . 





( ) , . . . , . , , . , if/switch



.





- . .





, . - , .





ISP - Interface Segregation Principle





, .  





- . , , . , - A B , , B A.





, Java, C#, C++, GO, Swift .. , - Maven Leiningen . 





.





(. “ , ” “ !!”)





, , .





(. “ - !”)





, , (SRP). .





DIP - Dependency Inversion Principle





. .





, . - . , , . , , , SQL-, . . , , , , , .





Dalam setiap kasus, slide Den diakhiri dengan kalimat “Tulis Kode Sederhana”. Ini adalah nasihat yang baik. Namun, jika tahun telah mengajari kita sesuatu, kesederhanaan itu membutuhkan disiplin yang dipandu oleh prinsip. Prinsip-prinsip inilah yang mendefinisikan kesederhanaan. Disiplin inilah yang mendorong programmer untuk menulis kode sederhana.





Cara terbaik untuk membuat kebingungan adalah dengan memberi tahu semua orang "tetap sederhana" dan tidak memberikan instruksi lebih lanjut. 








All Articles