Dalam pengembangan software, banyak prinsip-prinsip yang bisa diterapkan agar software tersebut menjadi software yang baik. Software yang baik adalah software yang dapat berfungsi dengan baik, mudah untuk dipelihara, source code-nya dapat digunakan kembali, kemampuannya cepat, dapat diandalkan dan masih banyak karakteristik lainnya. Untuk mencapai hal tersebut, salah satu prinsip yang dapat diterapkan adalah SOLID Principle. Apa itu? Di sini kita akan mengenal SOLID Principel. Berikut adalah penjelasannya.
SOLID principle adalah sebuah prinsip yang dikemukakan oleh Robert C. Martin (alias Uncle Bob) di dalam paper yang diterbitkannya pada tahun 2000 “Design Principles and Design Patterns” dengan tujuan untuk membuat code yang dapat dimengerti, dapat dibaca, dan dapat test oleh banyak developer secara kolaboratif.
Dalam 20 tahun terakhir kelima prinsip ini merevolusi dunia pemrograman berbasis object (OOP), merubah cara kita dalam menulis code.
SOLID sendiri adalah kependekan dari :
S – Single-responsiblity Principle
O – Open-closed Principle
L – Liskov Substitution Principle
I – Interface Segregation Principle
D – Dependency Inversion Principle
Berikut adalah penjelasan dari prinsip-prinsip tersebut:
Uncle Bob menyatakan bahwa sebuah class atau module sebaiknya memiliki hanya satu alasan untuk berubah yang berarti hanya memiliki satu tanggung jawab dalam sebuah class / module.
Sebagai contoh kita memiliki class buku. Class tersebut hanya bertanggung jawab atas objek buku dan memiliki method yang berkaitan dengan buku.
Suatu class harus bisa diekstensi dan tidak boleh dimodifikasi. Dengan menerapkan hal tersebut, kita akan berhenti untuk memodifikasi code yang sudah ada dan terhindar dari potensi error yang akan terjadi.
Sebagai contoh kita memiliki class mobil yang memiliki atribut merek, jenis, tahun, jumlah penumpang, dan jenis mesin. Kemudian kita memilki class mobilBensin yang mengekstensi class mobil yang memiliki atribut tambahan seperti minimal oktan bahan bakar dan jumlah silinder mesin.
Kemudian kita memiliki class mobilListrik yang juga mengekstensi class mobil yang memiliki atribut tambahan seperti maksimal tegangan listrik, tipe battery dan lain-lain. Class mobil tidak mengalami perubahan namun dapat diekstensi oleh class mobilBensin dan mobilListrik.
Liskov Substitution Principle ini memperluas Open Closed Principle dengan memfokuskan pada behavior dari superclass dan turunannya. Prinsip ini dapat juga diartikan bahwa objek-objek dari superclass seharusnya dapat digantikan dengan objek-objek yang merupakan turunan dari superclass tanpa merusak aplikasi. Dimana mengharuskan objek-objek dari turunan superclass memiliki behavior yang sama dengan superclassnya.
Maksud dari Interface Segretion adalah memecah Interface yang besar menjadi Interface yang kecil-kecil sehingga suatu class dapat mengimplementasi Interface-interface yang dibutuhkan saja. Sebagai contoh kita memiliki Interface transportasi darat, udara dan air. Kemudian kita memiliki satu class mobil yang hanya mengimplementasi transportasi darat. Lalu ada class pesawatAir yang mampu mengimplementasi interface udara dan air.
Dependency Inversion adalah prinsip yang menyetakan bahwa sebuah entitas itu bergantung pada abstraksi. Sehingga sebuah modul tingkat tinggi tidak boleh bergantung pada modul tingkat rendah, tetapi bergantung kepada abstraksi.
Maksud dari level-rendah dan level-tinggi disini adalah :
Prinsip ini mengajarkan untuk memisahkan setiap modul agar dapat independen.
SOLID Principle adalah fondasi penting dalam pengembangan perangkat lunak yang mendukung kode yang baik, mudah dimengerti, dan dapat diuji. Mengimplementasikan prinsip-prinsip ini dapat menghasilkan perangkat lunak yang lebih efisien, dapat dikelola, dan dapat diperluas seiring berjalannya waktu.
Oleh karena itu, pemahaman yang mendalam tentang setiap prinsip SOLID dan kemampuan untuk menerapkannya akan memberikan manfaat yang signifikan bagi pengembang perangkat lunak. Teruslah belajar dan eksplorasi, karena dunia pemrograman selalu berkembang, dan SOLID Principle adalah alat yang berharga untuk membantu Kamu menjadi pengembang perangkat lunak yang lebih baik.
Author: Ryan Suryohadiprojo
Editor: Kibar Mahardhika
Temukan berbagai pembelajaran teknologi lainnya!