S in SOLID — Single Responsibility Principal

SOLID adalah arsitektur untuk OOP yang diperkenalkan oleh Robert C Martin, atau yang lebih dikenal sebagai Uncle Bob.

SOLID sendiri adalah singkatan dari :

  • S — Single Responsibility
  • O — Open Close Principle
  • L — Liskov Substitution Principle
  • I — Interface Segregation Principle
  • D — Dependency Inversion

Apa itu?

SOLID architecture intinya adalah bagaimana kita mendesain aplikasi kita agar mudah diubah, dimaintain dan dikembangkan lebih jauh. SOLID juga membuat developer lebih mudah menemukan bugs, menghindari smelly code, dan gampang di-refactor.

S — Single Responsibility Principle

Single Responsibility Principle adalah prinsip yang mengatur bahwa satu kelas / method itu hanya mempunyai satu tugas. Ini juga dikenal sebagai separation of concern. Contoh konkrit dalam iOS adalah ViewController.

ViewController iOS selain me-render view, juga kadang dipakai untuk mengambil data, memparsing data, dan juga memilih data yang akan ditampilkan. Contohnya adalah ini :

https://gist.github.com/suprie/49cf37ff346b158435c5f9f7dd3ef29c#file-viewcontroller-swift

Di dalam method viewDidAppear itu, saya melakukan banyak hal.

  1. Saya membuka koneksi dengan sqlite
  2. Saya query ke database dan melakukan sorting untuk mendapatkan product
  3. Saya memparsing hasil query ke dalam dictionary juga
  4. Saya juga configure view ( view dan tableview )

Makanya itu violating SRP. Jika kita ingin merefactor, kita bisa memasukkan query ke database ke dalam satu class sendiri. Sehingga class ViewController tersebut menjadi seperti :

https://gist.github.com/suprie/87f3e3745a48abecbc8f4077d5576c8a#file-viewcontroller-swift

Sekarang, ViewController sudah diet, sudah berkurang banyak barisnya, dan lebih mudah dibaca apa yang dilakukannya. Dengan begini code kita akan lebih mudah dimaintain. Jika kita ingin melakukan perubahan misalnya ganti database dengan remote database macam firebase, kita bisa dengan mudah melakukannya dengan mengganti ProductDataAdapter tanpa harus memberi tahu si ViewController tentang perubahan tersebut.

NB: Saya convert code lama saya menggunakan Swiftify, sehingga saya tidak tahu apakah code di atas akan jalan atau tidak. But you got the idea.

Related Posts

Streaming Festival Disrupto Exploration and Experimentation 2020

Streaming Festival Disrupto Exploration and Experimentation 2020

Resiko Berbahaya menggunakan VPN gratisan di Laptopmu!

Resiko Berbahaya menggunakan VPN gratisan di Laptopmu!

Part II — Understanding about RuleChain

Mengenal dasar RxSwift

No Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Tags