Konsep SOLID Principle: Single Responsibility Principle

Muhammad Ridho K. Pratama
Ridho's Personal Note
2 min readSep 29, 2018
Photo by Marc Zimmer on Unsplash

SOLID Principles

  • Single Responsibility Principle
  • Open/Closed Principle
  • Liskov Subtitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle

SOLID Principles ini dicetuskan oleh Uncle Bob di sekitar tahun 1995-an, yang mana ketika kita mengimplementasikannya dalam pengembangan software dengan pendakatan berbasis objek (object oriented), diharapkan akan membuat kode program menjadi lebih adaptif terhadap perubahan serta mudah dalam maintenance.

Dalam bab ini, kita akan belajar bersama tentang salah satu prinsip yang ada dalam SOLID Principles, yaitu Single Responsibility Principle (SRP).

A class should have only one reason to change. — Uncle Bob

Jadi, kenapa?

Misalkan dalam sebuah projek aplikasi, Tim ditugasi untuk menulis struktur modelnya, sedangkan Baker ditugasi untuk menulis sebuah data access provider. Karena belum pernah belajar ini sebelumnya, jadinya struktur model dan data access providernya digabungkan jadi satu class. Karena jadi satu class, otomatis class tersebut bisa saja mengalami perubahan karena perubahan struktur data modelnya dan perubahan mekanisme akses datanya. Sehingga, Tim dan Baker berpeluang menciptakan konflik dalam version control karena bisa saja ia mengubah baris yang sama dalam satu file.

Maka dari itu, setiap class atau fungsi haruslah mempunyai satu tanggung jawab saja.

Contoh kode

Contoh kode ditulis dengan bahasa pemrograman Swift.

Untuk menggambarkan ilustrasi diatas, Tim dan Baker bisa saja membuat suatu class seperti ini

Ketika ada 2 perubahan sekaligus, baik perubahan struktur data dan mekanisme menyimpan datanya, Tim dan Baker akan mengubah file yang sama, sehingga bisa saja terjadi konflik kalau misalkan sama-sama mengubah di baris yang sama. Secara semantik pula, mana ada class yang harusnya cuma merepresentasikan struktur data bisa melakukan mekanisme penyimpanan data?

Kalau kita refactor class tadi supaya bisa mematuhi kaidah Single Responsibility Principle, kita bisa memisahkan class untuk data model dan data access providernya seperti ini.

Model

Repository

Ketika sudah direfactor seperti ini, pembagian tanggung jawab classnya sudah terpisah, tidak campur sari seperti tadi 😉.

Sekian penjelasan singkat mengenai konsep Single Responsibility Principle. Jika ada koreksi maupun pertanyaan bisa kita diskusikan bersama. Nantikan serial selanjutnya yang membahas tentang Open/Closed Principle 😉.

--

--