System Init
0%
LOADING_ASSETSv2.0.26
blogs/menerapkan-prinsip-solid-di-tongkrongan--part-2
//Khay
Read in English

Menerapkan Prinsip SOLID di Tongkrongan (Part 2)

ProgrammingSocialPhilosophy

Gue pernah bilang kalo nerapin prinsip SOLID (Single Responsibility, Open-Closed, Liskov, Interface Segregation, Dependency Inversion) di tongkrongan lu itu adalah hal wajib kalo lu ga pengen dapet spaghetti code mental. Sebulan berlalu, gue mau ngasih testimoni dari orang-orang yang beneran nyoba ngelakuin ini.

Salah satu temen jurusan IT gue, sebut aja si J, beneran nge-refactor circle pertemanannya. Dia nerapin Dependency Inversion secara ekstrem. Kalo dulu dia selalu ngerasa bersalah kalo ga ikut kumpul nongkrong tiap jumat malem (artinya idup dia tightly coupled sama validasi circle-nya), sekarang dia bikin sistemnya jadi loosely coupled.

Loose coupling itu gampangnya gini: lu sama temen lu masih saling kenal, masih saling follow, tapi lu ga butuh eksistensi mereka tiap hari buat ngerasa idup lu lengkap. Lu berdua adalah modul independen yang cuma berinteraksi lewat API yang jelas.

Awalnya si J ngerasa aneh. Idupnya mendadak jadi hening banget. Ga ada notif grup WA nyuruh dia cepet dateng ke kafe. Ga ada drama siapa yang belom bayar patungan Netflix. Tapi di sisi lain, otak dia beneran bisa jalanin proses background yang selama ini selalu pending. Dia mulai ngerjain project portofolio-nya, dia baca buku yang udah sebulan berdebu di meja, dan dia tidur nyenyak.

Fase hening ini sering disalahartikan orang sebagai depresi sosial. Padahal di dunia software, ini tuh idle state yang bagus banget. Server lu lagi ga dapet traffic aneh-aneh dari luar, jadi CPU load lu rendah dan lu bisa alokasiin daya komputasi buat internal maintenance.

Tapi tentu aja, ada resiko dari nerapin SOLID principles kalo lu ga jago ngomunikasinya.

Contohnya soal Interface Segregation Principle (ISP). Si J ini kan ga mau temen programmernya ngeluhin urusan cinta mulu. Jadi dia terang-terangan nolak dengerin curhatan pacar temennya. Akhirnya temennya ngira si J itu ansos dan ga punya empati. Padahal maksud si J, mending lu cerita ke temen psikologi lu yang emang punya interface buat nge-handle emotional payload, daripada cerita ke gue yang cuma bisa ngasih output logika mentah yang malah bikin lu tambah sakit ati.

Di sinilah seninya. Kita ini manusia, bukan mesin yang gampang nerima penolakan connection reset by peer. Lu tetep butuh ngebungkus refactoring lu ini pake UI/UX (baca: etika) yang halus.

Cara nerapinnya gampang: pas temen lu mulai ngirim data yang ga sesuai sama interface lu, cukup routing obrolannya ke arah lain dengan elegan. "Waduh, berat juga ya masalah lu bro. Kalo gue sih ga ngerti yang begituan, tapi lu udah nyoba nanya si A belom? Dia kan lebih paham soal ginian."

Intinya, nerapin arsitektur yang clean di idup lu itu bukan berarti lu jadi robot yang ga punya perasaan. Ini soal tau batasan kapasitas (capacity planning) dan sadar diri.

Kalo lu maksa buat nge-handle semua hal demi orang lain, sistem lu bakal meledak. Temen yang baik itu temen yang tau kapan dia harus nge-throw exception, dan kapan dia harus diem dengerin.

  • Khay