43 poin oleh xguru 2022-02-03 | 6 komentar | Bagikan ke WhatsApp
  • Banyak orang berusaha mengejar kode yang "clean", tetapi "clean" bukanlah ukuran yang berguna
  • Kode tidak bisa sekadar disebut "clean". Karena "clean" tidak benar-benar menjelaskan apa pun tentang kode
  • Saat orang mengatakan sebuah kode itu clean, biasanya maksudnya adalah kode tersebut unggul dalam satu atau beberapa hal tertentu

Apakah clean code benar-benar berarti kode yang bagus?

  • Kode bisa menjadi unggul karena banyak alasan
    → mudah dibaca, mudah dipahami, sederhana, berkinerja baik, aman, elegan, dapat diuji, teren kapsulasi, dapat dikembangkan, mudah dipelihara, dapat digunakan ulang..

  • Namun, dalam beberapa aspek, karakteristik-karakteristik ini saling bertentangan
    → kode yang paling sederhana kemungkinan bukan yang paling mudah diuji
    → interface dan dependency yang diinjeksi memudahkan pengujian, tetapi menjauh dari kesederhanaan
    → banyak menggunakan singleton mungkin membuatnya mudah dipahami, tetapi belum tentu menghasilkan aplikasi yang mudah dipelihara

  • Beberapa di antaranya pada dasarnya saling berlawanan, sehingga mungkin sulit memenuhi semuanya sekaligus
    → engineering adalah soal trade-off (kompromi), jadi tim bisa mendiskusikan kompromi seperti ini bersama-sama

Jika kodenya unggul, kita harus membicarakan "mengapa"

  • Ketika seseorang mengatakan sebuah solusi itu "clean", sering kali mereka tidak benar-benar merasionalisasi alasannya dan hanya mengatakan itu pilihan yang lebih baik
  • Untuk bisa berdiskusi secara konstruktif tentang solusi teknis, kita harus bisa menjelaskan dengan jelas mengapa satu solusi lebih baik daripada solusi lain
    → alih-alih sekadar mengatakan "clean", katakan "ter-decouple, mudah dipahami, mudah diuji.."

Kita harus menggunakan istilah yang tepat

  • Menulis kode pada umumnya adalah olahraga tim. Saat ngoprek sendirian kita bisa sesuka hati, tetapi saat bekerja dengan tim kita harus mendiskusikan ide
  • Menggunakan bahasa tertentu untuk membahas solusi teknis, dan memastikan seluruh tim memiliki pemahaman yang sama, sangat penting agar kita bisa saling memahami
  • Istilah "clean code" berarti hal yang berbeda bagi setiap orang
    → bagi seseorang, itu berarti arsitekturnya terdefinisi dengan baik; bagi yang lain, berarti kodenya sederhana dengan gaya format yang konsisten..
  • Kata-kata seperti "encapsulated", "testable", dan "reusable" punya makna yang kita semua sepakati
  • Saat kita memakai kata-kata yang lebih spesifik untuk menjelaskan karakteristik kode, kita bisa lebih yakin bahwa kita berada di halaman yang sama
  • "clean" punya tingkat presisi yang sama seperti "bagus"

Lalu, apa itu "clean code"?

  • Saya sampai pada kesimpulan bahwa ketika saya menggambarkan kode sebagai "clean", sering kali artinya adalah "kodenya memang bagus, tetapi saya tidak sepenuhnya yakin alasannya"
    → atau saya tahu mengapa kode itu bagus, tetapi tidak menemukan kata yang cukup jelas untuk menjelaskannya

  • Mengembangkan intuisi seperti itu memang baik, tetapi jangan berhenti di situ. Kita perlu menggali lebih dalam dan berusaha memahami "mengapa kode ini bagus"
    → apakah kode ini punya karakteristik lain yang tidak dimiliki yang lain? Dan apakah karakteristik itu yang paling cocok untuk proyek kita? Mungkin saja itu sebenarnya bukan solusi yang tepat

  • Saya berharap kita bisa yakin bahwa yang kita butuhkan bukan clean code, melainkan kode ______

6 komentar

 
kkw855 2023-04-18

Terima kasih atas tulisannya yang bagus ~~

 
choijaekyu 2022-02-04

Jangan sembarangan menendang kode legacy

Pernahkah kamu setidaknya sekali memenuhi requirement pertama untuk seseorang

 
sumkim 2022-10-12

Saya setuju.

 
rtyuiop 2022-02-03

Sepertinya clean code yang dibicarakan penulis dalam 'buku itu' berfokus pada dua hal di antaranya, yaitu 'mudah dipahami' dan 'dapat diuji'. Tentu saja, saya pikir keduanya adalah tolok ukur yang sangat penting. Namun, karena spesifikasi yang masih belum baku atau library yang belum matang, kadang kita terpaksa menggunakan apa yang biasa disebut 'hack', dan dalam situasi seperti ini tampaknya tidak terhindarkan untuk mengorbankan kualitas kode demi kualitas program.

 
spilist2 2022-02-03

Saya setuju. Ketika “clean” dipandang sebagai “berkualitas tinggi”, (seperti yang dikatakan Weinberg) kualitas adalah sesuatu yang bernilai bagi seseorang, jadi saya pikir tim perlu memiliki standar dan definisi tentang kualitas.

 
xguru 2022-02-03

Ini adalah tulisan yang berpendapat agar kita tidak mengatakan "clean code" secara samar dan ambigu, melainkan membicarakannya secara spesifik.

Tentang hal ini, di Hacker News juga ada berbagai pendapat mengenai interpretasi "clean code". Lihat juga komentarnya

There’s No Such Thing as Clean Code https://news.ycombinator.com/item?id=30111516

Topiknya sedikit berbeda, tetapi silakan lihat juga tulisan di bawah yang pernah diposting sebelumnya