SOLID Prinsiples – S-Single Responsibility

S.O.L.I.D prinsip adalah kumpulan dari best-practices untuk Object Oriented design. Semua design pattern pada Gang Of Four juga dibangun berdasarkan prinsip ini.

SOLID merupakan  prinsip dasar dalam membangun arsitektur software yang baik. SOLID merupakan singkatan dari 5 prinsip:

  1. S dari SRP (Single Responsibility Principle)
  2. O dari OCP (Open Closed Principle)
  3. L dari LSV (Liskov Substitution Principle)
  4. I dari ISP (Interface segregation principle)
  5. D dari DIP ( Dependency Inversion Principle)

S-Single Responsibility Principle

“A class should have only one reason to change.” – Robert C Martin

Sebuah class seharusnya diubah itu satu alasan aja. Terlalu banyak tanggung jawab yang dibebankan pada sebuah class sehingga membuat satu perubahan kode program bisa jadi menimbulkan banyak efek kepada yang lain. Fokus pada satu tanggung jawab memudahkan maintenance code.

public class Customer
{
public void Add()
{
try
{
// Database code goes here
}
catch (Exception ex)
{
System.IO.File.WriteAllText(@"c:\Error.txt", ex.ToString());
}
}
public void Delete()
{
try
{
// Database code goes here
}
catch (Exception ex)
{
System.IO.File.WriteAllText(@"c:\Error.txt", ex.ToString());
}
}
}

Pada class Customer method Add dan Deleta harusnya hanya menghandle satu high level abstraksi. Di dalam class tersebut juga terdapat duplikasi kode program penulisan log.
Penulisan log harusnya ditangani oleh class lain dalam hal ini class FileLogger. Sehingga jika ada perubahan pada proses penulisan log seperti path file yang diubah atau bahkan penulisan log dipindahkan ke database, kita bisa fokus hanya pada class FileLogger saja. Ingat! SRP bukan berarti satu class hanya boleh memiliki satu method saja, tapi hanya butuh satu alasan untuk memodifikasi class tersebut.

public class Customer
    {

        FileLogger _logger = new FileLogger();
        public void Add()
        {
            try
            {
                // Database code goes here
            }
            catch (Exception ex)
            {
                _logger.WriteLog(ex.Message);
            }
        }
        public void Delete()
        {
            try
            {
                // Database code goes here
            }
            catch (Exception ex)
            {
                _logger.WriteLog(ex.Message);
            }
        }
    }

    public class FileLogger
    {
        public void WriteLog(string message)
        {
            System.IO.File.WriteAllText(@"c:\Error.txt", message);

        }

Apa manfaat dari SRP?
1. Reuse, lebih mudah untuk mendaya-guna kode program
2. Clarity, kode yang kita menjadi sangat jelas karena ditulis hanya focus pada satu hal
3. Naming, tentu dengan hanya berfokus pada satu hal, penamaan class jadi lebih gampang.
4. Readability, karena berkaitan dengan Clarity dan Naming, maka menjadi sangat membantu dalam pembacaan kode program
5. Reduced Coupling, menurunkan tingkat kebergantungan antar class. Semakin tinggi kebergantungan, semakin susah untuk dimodifikasi

Satu pemikiran pada “SOLID Prinsiples – S-Single Responsibility

  1. Ping balik: SOLID Priciples-O-Open Closed Priciple – AdnanSetiawan's Blog

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s