Apa itu SOLID

SOLID yang akan kita bahas bukan lah SOLID STATE DRIVE atau pun SOLID = Padat. Tapi SOLID yang akan kita bahas adalah akronim dari lima prinsip dalam dalam Pemrograman Berbasis Objek atau yang dikenal dengan OOP. Dipromosikan oleh Robert C Martin aka Uncle Bob yang bertujuan ketika kita hendak membangun atau membuat software berbasis OOP, code kita menjadi fleksible, mudah dibaca dan dipelihara. Teori dari prinsip SOLID ini diperkenalkan di paper atau makalahnya yang berjudul Design Principles and Design Patterns pada tahun 2000 tetapi istilah atau akronimnya sendiri dicetuskan oleh Pak Michael Feathers.

SOLID terdiri dari:

  1. Single Responsibility Principle
  2. Open Closed Principle
  3. Liskov Substitution Principle
  4. Interface Segregation Principle
  5. Dependency Inversion Principle

Kenapa kita harus / wajib mempelajari prinsip – prinsip ini dalam OOP. Sebelum itu saya akan sedikit curhat terlebih dahulu awal mula belajar SOLID. Ketika saya berada di bangku kuliah, khususnya kuliah OOP. Saya dijelaskan tentang OOP, bagaimana OOP bekerja, istilah – istilah dalam OOP dan kadang masih bingung bagaimana menggunakannya. Seperti membedakan class Abstract dan Interface, terkadang bingung kapan diturunkan dan composite. Setelah bekerja dan memulai membuat aplikasi disitu mulai terasa apa yang tidak dimengerti di kampus lebih mengerti ketika masuk dunia kerja atau real project. Tetapi ketika mengembangkan aplikasi atau software terasa sekali codingan yang dibuat sering sekali direfactor bahkan dalam jangka 6 bulan sudah merefactor codingan sampai tiga kali. Ternyata Codingan yang dibuat selama ini tidak fleksible atau bahkan lebih cendrung susah dibaca, susah dikembangkan bahkan ketika sudah mulai gemuk banyak bug sana sini. Tak jarang codingan yang serupa diduplikasi karena sulitnya melakukan turunan (Inheritance).

Sadar atau tidak sadar bagi teman – teman yang sudah terbiasa dengan framework seperti Laravel di PHP, Django di Python atau RoR di Ruby. Framework yang kita gunakan selama ini mengimplementasikan prinsip SOLID. Kadang terpikir kok bisa yah orang bikin Framework yang mudah digunakan bahkan ketika satu team ramai – ramai menggunakannya begitu teratur semua pekerjaan kita. Di balik mudahnya Framework tersebut kalo kita bongkar isi core codenya pastilah sangat kompleks itu seperti seperti fenomena gunung es, terlihat cantik, sederhana diluar tetapi didalam nya ternyata sangat kompleks. Karena framework sendiri dibuat agar fleksible, reuse, bisa di maintain dan tentunya mudah dibaca dan dipelajari oleh semuanya.

Kalo kita ilustrasikan prinsip SOLID ini seperti Pancasila di Negara Indonesia. Lima ideologi ini merupakan dasar dari negara indonesia yang diharapkan ketika diterapkan dalam kesehariannya akan membangun Indonesia yang lebih baik (Melenceng sekali pembahasannya). Lalu apakah SOLID ini suatu kewajiban? seperti halnya prinsip dalam kehidupan ada yang memegang prinsip disetiap tindakan ada yang hanya sekedar menjalani saja dan kadang berpikir ribet amat sih hidup loe dengan prinsip loe. Ketika saya mengimplementasikan prinsip ini untuk menulis code, terasa sekali kodingan menjadi lebih kompleks dan lebih banyak dari yang seharusnya kadang hal simple bisa menjadi kompleks. Walau demikian saya pribadi tetap akan mencoba mengamalkan SOLID di setiap project yang saya kerjakan, karena hampir 6 tahun di awal karir saya di dunia programming sudah banyak code – code yang sudah saya refactor atau malah bikin orang susah, sulit dibaca, Not Well-Mentain itu karena ketidaktahuan prinsip SOLID ini.

Hal penting dari mempelajari SOLID adalah topik ini berkaitan sangat erat untuk memahami Design Patterns tertentu atau Software Design. Sekian sedikit tentang SOLID, tentunya untuk memahaminya akan kita bahas satu per satu untuk setiap prinsipnya. Mudah – mudahan penjelasan SOLID ini bermanfaat. Keep Coding dan Be Stupid Developer.

Referensi

https://medium.com/swlh/s-o-l-i-d-principles-explained-in-five-minutes-8d36b1da4f6b

https://www.freecodecamp.org/news/solid-principles-explained-in-plain-english/