Asia/Jakarta
BlogJuly 18, 2026

Object Calisthenics: Latihan Menulis Kode OOP yang Lebih Bersih

Muhammad Abdul Karim
Object Calisthenics: Latihan Menulis Kode OOP yang Lebih Bersih
Object Calisthenics adalah sembilan aturan yang diperkenalkan oleh Jeff Bay dalam buku The ThoughtWorks Anthology. Namanya terinspirasi dari kalistenik di dunia olahraga — latihan fisik dengan gerakan-gerakan dasar yang diulang untuk membentuk otot. Bedanya, di sini yang dilatih adalah "otot" desain object-oriented kita. Aturan-aturan ini sengaja dibuat ketat dan agak ekstrem. Tujuannya bukan supaya diikuti 100% di semua kode produksi, tapi sebagai latihan sadar: dengan memaksakan batasan, kita jadi lebih peka terhadap bau kode (code smell) seperti method yang terlalu panjang, class yang mengurus terlalu banyak hal, atau primitive yang dipakai sembarangan tanpa makna domain. Berikut kesembilan aturannya. Kalau sebuah method punya banyak level indentasi (nested if, nested for), itu tanda method tersebut melakukan terlalu banyak hal. Solusinya: ekstrak bagian yang bernidasi ke method terpisah. else sering menandakan logic yang bisa disederhanakan dengan early return, polymorphism, atau strategy pattern. Kode tanpa else biasanya lebih mudah dibaca karena alur normal dan alur pengecualian terpisah jelas. Primitive seperti string atau number tidak membawa makna domain maupun validasi. Membungkusnya dalam class kecil membuat aturan bisnis (misalnya format email, batas umur) terpusat di satu tempat, bukan tercecer di banyak fungsi. Kalau sebuah class punya properti berupa collection (array/list), bungkus collection itu dalam class tersendiri. Dengan begitu, logic terkait collection (filter, validasi jumlah, dsb.) tidak bocor ke class lain yang memakainya. Hindari rantai pemanggilan seperti a.getB().getC().doSomething(). Rantai panjang seperti ini membuat kode kita bergantung pada struktur internal object lain, bukan cuma pada object yang langsung berhubungan. Nama variabel, method, dan class sebaiknya ditulis lengkap dan jelas. Singkatan seperti calc, mgr, atau tmp menghemat sedikit ketikan tapi membebani setiap orang yang membaca kode setelahnya. Class sebaiknya tidak lebih dari sekitar 50 baris, package/folder tidak lebih dari sekitar 10 file. Batasan ini memaksa kita memecah tanggung jawab yang menumpuk di satu tempat — mirip semangat Single Responsibility Principle di prinsip SOLID. Aturan ini yang paling ekstrem — dan memang sengaja dibuat begitu supaya kita mempertanyakan setiap variabel instance yang ditambahkan. Kalau sebuah class butuh banyak state, biasanya itu tanda class tersebut sebenarnya menyimpan lebih dari satu konsep dan sebaiknya dipecah. Alih-alih meminta data lewat getter lalu memprosesnya di luar (feature envy), pindahkan behavior itu ke dalam class yang memegang data tersebut — konsisten dengan prinsip "Tell, Don't Ask". Sembilan aturan ini bukan checklist yang harus dipatuhi kaku di setiap file produksi — kalau dipaksakan 100%, kadang kita malah menghasilkan abstraksi berlebihan untuk kode yang sebenarnya sederhana. Perlakukan Object Calisthenics seperti namanya: latihan. Coba terapkan sesekali di kode baru atau saat refactoring, rasakan bagaimana batasan-batasan ini mendorong desain yang lebih kecil dan lebih jelas tanggung jawabnya, lalu ambil kebiasaan mana yang paling cocok untuk gaya dan konteks tim kamu.
Share this post:
Search
CategoriesProgramming