Prinsip “Berfungsi — jangan sentuh” — adalah aturan pemrograman tidak tertulis bahwa kode yang berfungsi tidak boleh diubah tanpa alasan yang kuat, bahkan jika strukturnya terlihat tidak optimal. Prinsip ini didasarkan pada pengamatan empiris: setiap perubahan membawa risiko menimbulkan kesalahan baru, dan manfaat refaktorisasi mungkin tidak sebanding dengan usaha yang dikeluarkan. Menurut Wikipedia (2026), idiom ini banyak digunakan dalam teknik, politik, dan pemrograman sebagai strategi konservatif manajemen perubahan.
Poin utama
Prinsip “Berfungsi — jangan sentuh” (Inggris: “If it ain't broke, don't fix it”) — adalah aturan empiris yang memperingatkan pengembang untuk tidak melakukan perubahan pada kode yang berfungsi tanpa alasan yang cukup. Di dasar prinsip ini terletak statistik sederhana: sebagian besar cacat justru dimasukkan dalam proses memodifikasi kode yang ada.
Prinsip ini bukan dogma — ini lebih merupakan heuristik yang membantu pengambilan keputusan dalam kondisi ketidakpastian. Semakin kompleks dan berantakan basis kode, semakin tinggi kemungkinan bahwa perubahan “tidak bersalah” akan merusak sesuatu yang tidak diduga akan rusak.
Menurut penelitian perusahaan Microsoft (2024), sekitar 60% dari semua insiden kritis di produksi terkait dengan perubahan kode baru-baru ini yang dilakukan dengan niat baik tetapi tidak cukup diuji dalam kondisi beban nyata.
Idiom “If it ain't broke, don't fix it” berasal dari budaya teknik Amerika pertengahan abad ke-20. Penggunaan terdokumentasi paling awal dikaitkan dengan Bert Lance (1977), yang bekerja di Komite Keuangan Senat AS dan menentang regulasi yang berlebihan.
Ke dalam pemrograman, prinsip ini datang dari teknik perangkat keras, di mana mengganti chip yang berfungsi dengan yang baru dapat menyebabkan konsekuensi yang tidak terduga. Dalam konteks perangkat lunak, prinsip ini mendapatkan penyebaran khusus seiring dengan meningkatnya kompleksitas sistem perangkat lunak dan munculnya kode warisan.
Menariknya, dalam pemrograman prinsip ini memiliki sisi lain — “berfungsi, tapi lebih baik jangan disentuh” sering menjadi alasan untuk menolak refaktorisasi, yang dalam jangka panjang menyebabkan akumulasi kritis utang teknis. Menurut perusahaan konsultan Thoughtworks (2023), sekitar 40% proyek menghadapi masalah serius karena konservatisme berlebihan terhadap perubahan.
Prinsip “Berfungsi — jangan sentuh” sangat relevan dalam situasi tertentu ketika harga kesalahan melebihi potensi manfaat dari perubahan.
Dalam kode warisan yang tidak dicakup oleh pengujian, setiap perubahan adalah permainan rolet Rusia. Jika pengembang tidak dapat memeriksa bahwa perubahan tidak merusak modul tetangga, strategi terbaik adalah tidak menyentuh kode yang berfungsi. Pengecualian — hanya bug kritis atau persyaratan keamanan.
Dalam sistem di mana waktu henti tidak dapat diterima atau harga kesalahan sangat besar — perangkat lunak medis, avionik, transaksi keuangan — prinsip “berfungsi — jangan sentuh” adalah standar de facto. Setiap perubahan melalui beberapa tahap persetujuan dan pengujian.
Jika rilis besok dan kode berfungsi — jangan coba perbaiki arsitekturnya. Ubah hanya apa yang secara langsung memengaruhi fungsionalitas rilis. Tunda refaktorisasi ke sprint berikutnya (tapi jangan lupakan).
| Situasi | Terapkan prinsip? | Alternatif |
|---|---|---|
| Kode berfungsi tapi jelek | Ya, jika tidak ada pengujian | Tulis pengujian, lalu refaktorisasi |
| Kode dengan bug diketahui | Tidak | Perbaiki bug dengan pengujian |
| Kerentanan keamanan | Tidak | Perbaiki segera |
| Ketergantungan usang | Sebagian | Perbarui dengan pengujian |
| Kinerja rendah | Tergantung SLA | Profil, lalu optimalkan |
Mengikuti prinsip “berfungsi — jangan sentuh” secara membabi buta membawa risiko tidak kurang dari refaktorisasi tanpa akhir. Mari kita lihat bahaya utamanya.
Jika setiap pengembang berpedoman pada prinsip ini, basis kode dengan cepat berubah menjadi “kue lapis” dari solusi usang, kruk, dan algoritma tidak optimal. Cepat atau lambat utang teknis menjadi tak tertahankan — setiap perubahan membutuhkan berminggu-minggu analisis.
Terkadang perubahan yang tampak berisiko justru secara signifikan meningkatkan kinerja atau keamanan. Prinsip “berfungsi — jangan sentuh” tidak boleh memblokir perubahan yang membawa manfaat terukur — mengurangi biaya server, mempercepat pemuatan halaman, meningkatkan keamanan.
Ketika tim bertahun-tahun tidak menyentuh bagian kode tertentu, mereka kehilangan pemahaman tentang cara kerjanya. Pengembang kunci pergi — dan kode berubah menjadi warisan tanpa kemungkinan pemeliharaan. Prinsip harus diterapkan dengan mempertimbangkan pemeliharaan jangka panjang proyek.
Strategi optimal — jangan ikuti prinsip secara membabi buta, tetapi terapkan secara sadar, dengan mempertimbangkan konteks. Refaktorisasi diperlukan, tetapi harus aman.
Aturan pramuka dalam pemrograman: “Tinggalkan kode lebih bersih dari yang kamu temui”. Jika pengembang melakukan perubahan pada modul, ia harus meningkatkan strukturnya, tetapi dalam batas wajar. Tidak menulis ulang semuanya dari awal, tetapi setidaknya mengganti nama variabel yang tidak terbaca dan menambahkan komentar.
Pengujian — satu-satunya cara untuk menerapkan prinsip “berfungsi — jangan sentuh” dengan aman. Jika kode dicakup oleh pengujian, setiap refaktorisasi menjadi dapat diprediksi: pengembang mengubah kode, menjalankan pengujian dan melihat apakah ada yang rusak. Tanpa pengujian — jangan sentuh. Dengan pengujian — refaktor dengan percaya diri.
// Contoh: refaktorisasi aman di bawah cakupan pengujian
class PriceCalculator {
fun calculatePrice(basePrice: Double, discount: Double): Double {
// Kode lama tapi berfungsi
return basePrice - (basePrice * discount / 100.0)
}
}
// Pengujian yang melindungi dari regresi
class PriceCalculatorTest {
fun testCalculatePrice() {
val calc = PriceCalculator()
assertEquals(90.0, calc.calculatePrice(100.0, 10.0))
}
}
Contoh ini menunjukkan pendekatan yang benar: pertama pengujian, lalu refaktorisasi. Jika pengujian lulus — perubahan aman. Prinsip “berfungsi — jangan sentuh” berubah menjadi “berfungsi di bawah pengujian — refaktor dengan berani”.
Mari kita lihat skenario nyata di mana prinsip “berfungsi — jangan sentuh” terbukti menyelamatkan dan juga destruktif.
Seorang pengembang menemukan bahwa dalam kode pemrosesan tanggal digunakan format DD/MM/YY sebagai ganti YYYY. Kode berfungsi dengan benar dari tahun 2000 hingga 2025. Meskipun ada keinginan untuk “memperbaiki” — ia meninggalkan kode apa adanya, hanya memberikan komentar. Pada tahun 2026 perusahaan memperbarui sistem, dan solusi baru sudah memproses abad dengan benar. Perubahan dini hanya akan merusak logika yang berfungsi.
Seorang insinyur memutuskan untuk “memperbaiki” kode impor data lama tetapi berfungsi dengan menggantinya dengan pustaka modern. Ia tidak mempertimbangkan bahwa pustaka lama menangani kasus batas spesifik yang tidak didokumentasikan. Setelah rilis — kehilangan data massal. Prinsip “berfungsi — jangan sentuh” dilanggar, dan harga kesalahan adalah dua minggu kerja tim untuk pemulihan.
Pertanyaan yang sering diajukan
Tidak, mengikuti prinsip secara membabi buta menyebabkan akumulasi utang teknis dan hilangnya fleksibilitas proyek. Pendekatan optimal — penerapan sadar dalam situasi di mana risiko perubahan melebihi potensi manfaat. Penting untuk mengevaluasi setiap kasus secara individual.
Melanggar prinsip diperlukan saat menemukan kerentanan keamanan, bug kritis yang memengaruhi data pengguna, dan saat perlu memperbarui ketergantungan dengan kerentanan yang diketahui. Dalam kasus ini, risiko tidak bertindak lebih tinggi daripada risiko perubahan.
Satu-satunya cara aman — pertama tutupi kode dengan pengujian (pengujian karakterisasi), kemudian lakukan refaktorisasi langkah demi langkah dengan menjalankan pengujian secara terus-menerus. Tanpa perlindungan pengujian, prinsip “berfungsi — jangan sentuh” harus diterapkan secara ketat.
Pengembang berpengalaman melanggar prinsip secara sadar — mereka melihat konsekuensi tidak jelas dari implementasi saat ini: bug masa depan, hambatan kinerja, masalah skalabilitas. Keputusan mereka didasarkan pada pengalaman, bukan ketakutan akan perubahan.
Keseimbangan dicapai melalui budaya pengujian dan tinjauan kode. Jika kode dicakup oleh pengujian, refaktorisasi aman. Jika tidak — setiap perubahan harus seminimal mungkin. Prinsip “berfungsi — jangan sentuh” bukan larangan perubahan, tetapi tuntutan kesadaran.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga