O in SOLID — Open / Close Principles

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.

O — Open / Closed Principle

Open / Closed Principle artinya sebuah class harus bisa di-extend, tapi harus juga tertutup untuk modifikasi. Agak oxymoron memang, tapi bisa dilakukan. Kenapa harus Open / Closed Principle? Principle ini agar menjaga agar behaviournya tetap, dan apapun perubahan tidak merusak versi sebelumnya. Membuat code kita lebih gampang ditebak, lebih kokoh, dan gak gampang break. Bagaimana tips and trick agar code kita tidak violate Open / Closed Principle ?

Sebisa mungkin menghindar public variable, apalagi Global variable

Contohnya:

Kode tersebut sepertinya tidak berbahaya, dan mungkin saya sendiri sering melakukannya. Mengambil data di background lewat viewModel, lalu data disimpan di view Model dan view controller bisa akses tersebut. Permasalahannya, object dari objects itu bisa diambil dan ditulis oleh siapa saja. Bisa saja ada function yang mengubah object objects itu. Sehingga class tersebut tidak open / close principle, karena class tersebut open for modification.

Kita bisa ubah code kita menjadi slightly better. Contohnya:

Dengan mengubah variable objects menjadi private, dan mengenalkan dua method baru (numberOfObjects dan object(at:)). Classnya menjadi close for modification.