Versatile & Simple: Single Responsibility Pattern (SRP)

FelixTjahyadi
3 min readApr 28, 2024

By: Felix Tjahyadi

Whats SRP?

Pola Single Responsibility (SRP) adalah salah satu prinsip desain yang fundamental dalam pengembangan perangkat lunak. Prinsip ini memanfaatkan ide bahwa sebuah kelas, modul, atau fungsi seharusnya hanya memiliki satu tanggung jawab yang jelas. Dengan kata lain, sebuah hal dalam kode seharusnya hanya bertanggung jawab atas satu aspek tertentu dari fungsionalitas aplikasi.

Konsep ini penting karena memungkinkan pengembang untuk memisahkan logika yang berbeda dan mengelompokkannya sesuai dengan tujuan masing-masing. Hal ini menghasilkan kode yang lebih terstruktur, mudah dimengerti, dan mudah diuji.

Why SRP?

Dikarenakan setiap hal dalam kode bertanggung jawab atas satu aspek maka dapat ditemui beberapa manfaat terhadap penggunaan SRP tersebut:

  1. Keterbacaan dan Pemeliharaan Kode: Dengan memisahkan tanggung jawab, kode menjadi lebih mudah dipahami karena setiap entitas hanya bertanggung jawab atas satu aspek. Ini membuat pemeliharaan dan pengembangan kode menjadi lebih efisien.
  2. Pengujian yang Lebih Mudah: Pengujian unit menjadi lebih sederhana karena setiap entitas dapat diuji secara terpisah. Ini menghasilkan pengujian yang lebih spesifik dan akurat.
  3. Pengurangan Risiko Bug: Pemisahan tanggung jawab mengurangi kemungkinan bug karena perubahan dalam satu area tidak memengaruhi area lain secara tidak terduga. Hal ini membuat kode lebih stabil dan dapat diandalkan.
  4. Fleksibilitas dalam Perubahan: Dengan SRP, perubahan dalam aplikasi dapat dilakukan dengan lebih aman dan cepat. Entitas yang hanya bertanggung jawab atas satu aspek memungkinkan pengembang untuk membuat perubahan tanpa memengaruhi bagian lain dari aplikasi.

When to SRP?

Single Responsibility Pattern (SRP) sangat berguna dalam berbagai situasi dalam pengembangan perangkat lunak. Berikut adalah beberapa kasus di mana penggunaan SRP sangat direkomendasikan:

  1. Ketika Kode Menjadi Sulit Dipahami: Jika suatu bagian dari kode menjadi sulit dipahami karena terlalu kompleks atau mencoba melakukan terlalu banyak hal, maka ini adalah tanda bahwa SRP dapat digunakan. Dengan memisahkan tanggung jawab, akan dapat membuat setiap bagian kode lebih fokus dan lebih mudah dipahami.
  2. Perubahan yang Sering Terjadi: Jika merencanakan atau mengetahui bahwa beberapa bagian dari aplikasi cenderung mengalami perubahan secara teratur, maka memisahkan tanggung jawab dengan SRP akan memudahkan pengelolaan perubahan tersebut. Perubahan hanya perlu dilakukan pada bagian yang relevan tanpa memengaruhi seluruh sistem.
  3. Ketika Memiliki Fungsi atau Kelas yang Melakukan Banyak Hal: Jika memiliki fungsi atau kelas yang melakukan terlalu banyak hal yang berbeda, ini mungkin menjadi tanda bahwa SRP dapat digunakan. Memisahkan tanggung jawab akan membuat kode lebih modular dan lebih mudah diuji.
  4. Menghindari Ketergantungan Antar-Komponen: Dengan SRP, dapat menghindari ketergantungan yang berlebihan antara komponen-komponen dalam sistem. Setiap komponen bertanggung jawab atas satu hal saja, sehingga mengurangi risiko ketergantungan yang rumit dan sulit dielola.

Past Work Regarding SRP

Dalam penggunaannya sendiri saya sudah sering menggunakan pola tersebut dikarenakan sangatlah mudah untuk diimplementasikan dan digunakan. Saya seringkali mencoba mengubah kode saya sehingga memudahkan anggota tim untuk memahami kerja kode tersebut. Dalam beberapa pengerjaan proyek saya saat ini:

Pada commit tersebut saya membuat sebuah fungsi terpisah yang dapat menvalidasi input lebih mendalam yang mana akan dipanggil pada saat pembacaan form input.

--

--