Software Development: Fondasi Kokoh untuk Pengembangan Software

Software Development: Fondasi Kokoh untuk Pengembangan Software

Software Development Principles adalah salah satu prinsip “standar” yang bisa diterapkan pada kode program yang kita buat. Apabila kita menerapkan prinsip SOLID, maka kode yang kita buat akan menjadi jauh lebih baik; lebih mudah di-maintain, flexible, reusable, extendable. Dengan kata lain, kode kita menjadi lebih “pro”.

SOLID dipopulerkan oleh Uncle Bob (Robert C. Martin), meskipun beberapa item di dalamnya sudah pernah dipopulerkan sebelumnya oleh orang lain. Uncle Bob adalah penulis buku “Clean Code: A Handbook of Agile Software Craftsmanship”. Ini adalah salah satu buku yang kami rekomendasikan kepada setiap para programmer untuk dibaca.

“Writing clean code is what you must do in order to call yourself a professional. There is no reasonable excuse for doing anything less than your best.”

Robert C. Martin

SRP (Single Responsibility Principle)

Definisi: “A class should have one and only one reason to change (single responsibility)” Dalam satu class, hanya boleh diisi dengan satu tanggung jawab. Jangan memasukan kode yang beraneka ragam ke dalam satu class. Contoh: Jika class tersebut bertanggung jawab untuk me-manage tabel “users”, maka tidak boleh dibebani lagi dengan tabel “orders” misalnya, atau dengan menambahkan perhitungan diskon akhir tahun. Perhitungan diskon harus dipisahkan ke class tersendiri. Manajemen tabel “orders” pun harus dipisah ke class tersendiri.

Mengapa hal ini penting?

  • Saat menulis class atau function yang didedikasikan untuk satu fungsi, akan lebih mudah untuk memahami, memelihara, dan memodifikasi kode Anda.
  • Jika Anda ingin mengubah fungsionalitas sistem, akan mudah mencari bagian code yang harus diubah.
  • Membuat kode lebih terorganisir dan mudah dibaca. Ini juga membuat penggunaan kembali kode menjadi lebih mudah.

OCP (Open Closed Principle)

Definisi: “Entities (classes, modules, functions etc.) should be open for extension but closed for modifications”. Class/function harus dapat di-extend fungsinya tanpa merubah kode di dalamnya. Hmm terdengar tricky, tapi dalam programming hal itu bisa dilakukan.

Ide ini difasilitasi oleh Open/Closed Principle. function, class, dan modul kita harus dirancang sedemikian rupa sehingga terbuka untuk perluasan, namun tertutup untuk modifikasi.

  • Open for Extension: Fungsi baru dapat ditambahkan ke dalam class dan modul tanpa merusak kode yang ada. Komposisi dan warisan dapat digunakan untuk mencapai hal ini.
  • Closed for Modification: Sebaiknya jangan membuat perubahan yang merusak fungsionalitas saat ini, karena hal ini memerlukan refactoring dari kode yang sudah ada dan menulis beberapa pengujian untuk memastikan perubahan tersebut berfungsi.

LSP (Liskov Substitution Principle)

Definisi: “Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it”. Class harus bisa di-switch dengan class turunannya tanpa menyebabkan kesalahan logic ataupun teknis.

ISP (Interface Segregation Principle)

Clients should not be forced to depend upon interfaces that they do not use.”

Interface dibuat sesuai dengan kebutuhan klien, dan tidak boleh memaksa untuk mengimplementasi semua function. Karena, mungkin beberapa function tidak dibutuhkan oleh class tersebut.

DIP (Dependency Inversion/Injention Principle)

Definisi: “Clients should not be forced to depend upon interfaces that they do not use.” A. “High level modules should not depend upon low level modules. both should depend upon abstractions.” B. “Abstractions should not depend upon details. Details should depend upon abstractions.”

Mirip-mirip SRP, tapi ini berlaku ntuk interface. Interface juga tidak boleh memiliki terlalu banyak function sehingga memaksa client class nya untuk mengimplementasi semua function. Karena, mungkin beberapa function tidak dibutuhkan oleh class tersebut.

Kesimpulan

  • Prinsip Single Responsibility (SRP) :
    Dengan memisahkan tanggung jawab dalam kelas-kelas yang berbeda, kita menciptakan kode yang lebih mudah dimengerti, dikelola, dan diperbaiki. Setiap kelas seharusnya memiliki satu alasan untuk berubah.
  • Prinsip Open/Closed (OCP) :
    Kode seharusnya terbuka untuk perluasan namun tertutup untuk modifikasi. Ini mendorong penggunaan pewarisan dan polimorfisme untuk mengubah perilaku tanpa mengubah kode yang sudah ada.
  • Prinsip Liskov Substitution (LSP) :
    SubClass seharusnya bisa digunakan sebagai pengganti kelas induk tanpa memengaruhi kebenaran program. Ini memastikan hubungan semantik antar kelas.
  • Prinsip Interface Segregation (ISP) :
    Interface yang spesifik untuk setiap kelas membantu menghindari implementasi yang tidak diperlukan. Kelas seharusnya hanya mengimplementasikan apa yang diperlukan, mencegah pengaruh yang berlebihan.
  • Prinsip Dependency Inversion (DIP) :
    Bergantung pada abstraksi daripada implementasi konkrit memungkinkan fleksibilitas dan menghindari ketergantungan yang kuat antara komponen-komponen sistem.

PT Neuronworks Indonesia hadir sebagai partner terpercaya dalam implementasi solusi teknologi informasi yang handal dan scalable. Dengan pengalaman lebih dari 10 tahun dalam industri IT, kami siap membantu mengoptimalkan infrastruktur database bisnis Anda dengan solusi High Availability yang customized sesuai kebutuhan.

Hubungi Tim Ahli Kami Sekarang untuk konsultasi GRATIS mengenai masalah yang tepat untuk bisnis Anda!

Berita Rekomendasi

ChatGPT & Programmer Akan Saling Membantu

12/11/2024

ChatGPT & Programmer Akan Saling Membantu

ChatGPT dapat membuat program komputer? Betul! Tetapi membuat pemrograman “besar” yaitu sebuah sistem komputer, rasanya masih belum bisa.Mengapa? Karena membuat sebuah sistem komputer, prosesnya juga panjang dan kompleks. Sementara itu,…

Lihat

12/11/2024

Why are Software Engineering Principles Important?

Sebagai programmer kita pasti sudah banyak menulis kode program dalam bahasa apapun yang kita kuasai. Bahasa c#, java, golang, javascript, python, ruby, php, dll. Tapi pernahkah kita berfikir? Dinisilah pentingnya…

Lihat
Ancaman Ransomware di Indonesia Tertinggi Di Dunia

11/11/2024

Ancaman Ransomware di Indonesia Tertinggi Di Dunia

Pertumbuhan digital yang begitu pesat diikuti peningkatan ancaman siber yang signifikan. Menurut laporan terbaru National Cyber Security Index (NCSI) menunjukkan keamanan siber Indonesia berada di peringkat ke-6 di antara negara- negara…

Lihat