Apakah praktik "Kode Bersih" benar-benar bersih dan bermanfaat? [Tutup]

11

Saat ini saya sedang magang di perusahaan besar dan mereka mengalami banyak perubahan dalam struktur pengiriman perangkat lunak (pindah ke Agile).

Dalam beberapa bulan terakhir saya telah memperhatikan keterikatan religius terhadap Clean Codepraktik-praktik ini dan buku itu seperti sebuah Alkitab bagi para pengembang.

Sekarang, salah satu fitur terpenting dari kode bersih adalah kode penjelasan sendiri yang didasarkan pada penamaan yang dapat dimengerti dan re-factoring yang ketat. Ini diikuti oleh no commentingaturan.

Saya mengerti bahwa kode bersih ini adalah investasi jangka panjang yang akan memudahkan mengikuti pemeliharaan dan peningkatan kode, tetapi ... apakah ini benar-benar layak untuk semua keributan ini?

Adakah yang akan membagikan pengalaman mereka tentang Kode Bersih dan pendapat apa pun apakah saya terlalu konservatif atau hanya tren sementara.

Artis Vancans
sumber
1
Banyak pertanyaan bagus menghasilkan beberapa tingkat pendapat berdasarkan pengalaman para ahli, tetapi jawaban untuk pertanyaan ini cenderung hampir seluruhnya didasarkan pada pendapat, bukan fakta, referensi, atau keahlian khusus.
nyamuk
4
Saya tidak memiliki pendapat yang sangat tinggi tentang buku itu (meskipun penulisnya). Secara umum membayar untuk tidak terlalu dogmatis. Kebanyakan rekomendasi pemrograman adalah karena telah terbukti bekerja dalam praktik, tetapi itu bukan kebenaran absolut, jadi jangan terlalu khawatir. Teruslah membaca dan lanjutkan dengan apa yang Anda rasa lebih benar, tetapi jangan juga menemukan kembali kemudi. Peluangnya adalah seseorang yang lebih pintar dari kita telah menemukan solusi yang lebih baik daripada kita sendiri.
DPM
2
Metode dengan nama 70 karakter mungkin melakukan lebih dari satu hal. Pelanggaran SRP apakah saya benar ?!
Tombatron
1
Inilah pemikiran lain, 5 atau 10 tahun dari sekarang ketika Anda adalah seorang pengembang di perusahaan yang tidak terlalu peduli dengan kode bersih, Anda akan sangat menghargai latihan dogmatis ini.
Tombatron
3
Setelah bekerja (secara singkat) di bawah "tidak ada komentar", saya lebih suka itu menjadi pedoman yang kuat daripada aturan. Ada saat-saat ketika komentar dibutuhkan - biasanya dalam logika bisnis yang tidak jelas. Metode yang disebut CalculateFoonicityMetric()memberi tahu Anda apa yang dilakukannya, dan kode yang ditulis dengan baik akan menunjukkan kepada Anda bagaimana ... tetapi tidak satu pun dari ini yang memberi tahu Anda alasannya . Kode dapat menjadi jelas dalam hal apa (kalikan ini dengan itu, bagi dengan yang lain, beri kuadratkan, tambahkan bit ini ...) tetapi tidak jelas mengapa (faktor = a * b / c; kuadrat untuk menjelaskan foo negatif, sesuaikan untuk melayang ...). Saya menghargai komentar cepat yang menjelaskan alasannya.
anaximander

Jawaban:

17

Saya mengerti bahwa kode bersih ini adalah investasi jangka panjang yang akan memudahkan mengikuti pemeliharaan dan peningkatan kode, tetapi ... apakah ini benar-benar layak untuk semua keributan ini?

Benar.

Re-factoring sangat penting, tetapi menghabiskan 75% dari waktu Anda untuk memindahkan metode dan menghabiskan banyak waktu untuk menentukan judul yang tepat tampaknya tidak seproduktif itu.

Tentu, tetapi pertimbangkan bahwa perusahaan besar mungkin memiliki kode buruk bertahun-tahun atau bersih untuk dibersihkan. Butuh banyak waktu dan upaya untuk melakukan itu.

Hal utama yang harus disadari adalah bahwa Anda berdua benar. "kode bersih" sangat penting, dan Kode Bersih adalah cara yang dihormati secara universal untuk sampai ke sana. Karena perusahaan baru saja memulai, mereka akan lebih terikat pada buku daripada kelompok yang memiliki lebih banyak pengalaman. Setelah mereka melakukannya sebentar, mereka akan mulai belajar apa yang berhasil dan yang tidak. Begitu mereka memahami hal itu dengan lebih baik, mereka (semoga) akan mengikuti pendekatan yang lebih pragmatis dan alami yang menjaga kode bersih, tetapi tidak mengarah pada 70 nama fungsi char.

Telastyn
sumber
4

Saya awalnya menulis komentar. Saya akan mencoba memberikan lebih sedikit jawaban daripada yang perlu dipertimbangkan perspektif. Namun, saya benar-benar mendukung praktik "Kode Bersih" seperti penamaan yang dapat dimengerti dan refactoring.

Saya selalu tidak menyukai aturan no comments , karena ada kasus di mana komentar diperlukan untuk mencegah kerusakan kode di masa depan. Mereka biasanya harus dibatasi pada apa yang sedang dilakukan dan mengapa. Gunakan dengan hemat ketika kode melakukan sesuatu yang tidak terduga, atau algoritma perlu diganti.

Pertimbangkan produktivitas saat Anda membaca atau memelihara kode. Dalam masa pakai kode, ini mungkin lebih penting daripada produktivitas saat menulis kode. Akankah praktik-praktik ini membantu produktivitas dalam tugas-tugas ini?

Dengan pengalaman, praktik-praktik ini harus menjadi tertanam, dan kurang sebagai pembunuh produktivitas. Memilih nama yang tepat mungkin lebih lama karena Anda mengklarifikasi apa yang perlu dilakukan kode. (Klarifikasi ini dapat membuat pengkodean dan debugging menjadi lebih cepat.) Apakah ini menghasilkan kode yang hanya melakukan apa yang diperlukan atau yang memiliki lebih sedikit bug? Apa dampaknya terhadap produktivitas?

Waktu yang diperlukan untuk memilih nama metode yang tepat kemungkinan akan langsung terbayar dengan lebih baik dalam memahami apa tujuan metode tersebut. Bandingkan nama metode "iterateOverCustomers" dengan "locActiveCustomers". Yang mana yang menyampaikan maksud fungsi? Yang mana yang akan lebih mudah untuk refactor jika perlu?

BillThor
sumber
3
Saya ingin menunjukkan bahwa aturan "tidak ada komentar" yang orang ingin cantumkan pada buku Kode Bersih sebenarnya tidak ada di dalam buku ini. Sebaliknya, ada seluruh bab tentang komentar, yang setengahnya digunakan untuk menggambarkan banyak jenis "komentar baik", diikuti oleh bagian tentang "komentar buruk". Pendapat penulis tentang masalah ini sebenarnya jauh lebih masuk akal daripada banyak yang memberinya pujian.
Eric King
Saya mengomentari aturan "tidak ada komentar" secara umum. Saya telah bekerja dalam bahasa di mana ada proposal untuk menghapus komentar dari definisi bahasa. Tidak ada komentar baik atau buruk. Pada saat itu kami memiliki komentar di blok kode di mana diinginkan untuk gagal dalam beberapa kasus. Ada peringatan komentar bahwa itu yang terjadi dan tidak menambahkan blok kode baru pada saat itu.
BillThor
Ya, itu tampak sangat ekstrem bagiku.
Eric King