Kadang-kadang saya menghabiskan jumlah waktu (jam) yang menggelikan untuk membuat kode "terlihat cantik". Maksud saya membuat segala sesuatunya terlihat simetris. Saya benar-benar akan dengan cepat menggulir seluruh kelas untuk melihat apakah ada yang melompat keluar karena tidak terlihat "cantik" atau "bersih".
Apakah saya membuang-buang waktu? Apakah ada nilai dalam perilaku semacam ini? Kadang-kadang fungsi atau desain kode bahkan tidak akan berubah, saya hanya akan menata ulang sehingga terlihat lebih bagus.
Apakah saya hanya sepenuhnya OCD atau adakah manfaat tersembunyi di sini?
clean-code
TaylorOtwell
sumber
sumber
Jawaban:
Gunakan pemformat otomatis. Jika Anda benar-benar menghabiskan banyak waktu untuk mengedit kode secara manual, saya bersedia menebak Anda tidak terlalu tertantang / bosan, karena sama sekali tidak ada alasan untuk itu. Ctrl + K, Cntrl + D dalam VS akan memformat seluruh dokumen. Anda dapat menggunakan sesuatu seperti Style Cop jika Anda menginginkan sesuatu yang sedikit lebih berat.
Adalah baik untuk memiliki kebanggaan pada kode Anda, tetapi tidak ketika datang dengan mengorbankan menjadi pintar (mencari solusi yang paling efisien. Dalam hal ini, menggunakan alat untuk mengotomatiskan proses yang membosankan) dan menyelesaikan sesuatu (apa lagi yang bisa dilakukan) Anda telah bekerja selama jam-jam itu?).
sumber
Jika Anda tidak mengubah apa pun yang membuatnya lebih mudah dipahami, maka ya, Anda membuang-buang waktu.
sumber
Tidak ada yang disembunyikan, kode cantik mudah dibaca dan mudah dirawat.
"Jam" tampaknya sedikit berlebihan, kecuali jika Anda memiliki basis kode yang besar. Tidak semuanya harus sempurna itu hanya harus baik
sumber
Ini masalah penilaian; jika Anda menghabiskan berjam-jam, saya akan mengatakan Anda akan di atas. Namun, ada hal-hal yang dapat dilakukan manusia yang tidak dapat dilakukan oleh format-otomatis, dan hal-hal yang dapat Anda lakukan untuk membuat kode Anda lebih mudah dibaca yang sulit ditangkap dalam standar pengkodean perusahaan.
Sebagai contoh, ketika mendeklarasikan variabel dalam sebuah kelas, saya suka memiliki pengelompokan logis - membuatnya lebih mudah untuk mengikuti logika.
Kode biasanya dianggap "menulis sekali, baca banyak", jadi membuat pengalaman membaca yang menyenangkan adalah kebiasaan yang baik - tetapi tata letak menurut saya jauh lebih sedikit masalah daripada konvensi penamaan yang jelas, abstraksi bersih, dan tanda tangan metode yang terstruktur dengan baik.
Saya telah melihat kode yang diformat dengan indah yang menyebabkan momen WTF parah karena proses pemikiran yang mendasarinya cacat. Jika Anda punya waktu berjam-jam, saya akan menghabiskannya untuk desain dan refactoring, daripada tata letak ....
sumber
Tidak, Anda tidak sepenuhnya OCD. Pujian terbesar yang pernah saya dengar sebagai seorang programmer adalah, "Kode Anda sangat bersih sehingga adik lelaki saya bisa mengetahuinya."
Suatu hari seseorang harus mendukung kode Anda. Kode bersih jauh lebih mudah untuk didukung. Dan suatu hari nanti mungkin Anda. Dalam 6 bulan atau satu tahun Anda tidak akan mengingat apa yang Anda lakukan. Tetapi jika itu bersih dan mudah dibaca, ia akan kembali dengan cepat.
Yang mengatakan jika kodenya adalah sampah, itu tidak membantu menjadi sampah yang cantik. Tetapi jika terstruktur dengan baik dan hanya memiliki masalah fungsionalitas maka akan jauh lebih mudah untuk meningkatkan fungsionalitasnya.
sumber
Tidak - terobsesi dengan membuat kode terlihat cantik tidak ada gunanya .
Berikut adalah beberapa potongan kebijaksanaan yang menurut saya berguna:
Tanyakan Mengapa Kode Harus Rapi.
Anda mungkin atau mungkin tidak membuang waktu Anda tergantung pada definisi cantik Anda.
Jika Anda Menggunakan Sistem Versi Bersamaan untuk Melacak Perubahan pada Kode - Jangan Gabungkan Perubahan Formatting Kode dengan Perubahan Fitur Logis / Menambahkan dalam Komit yang Sama.
Martin Fowler juga berbicara tentang 'memakai dua topi' dan beralih di antara mereka sepanjang hari. Satu topi untuk menambahkan fitur, satu topi untuk refactoring.
Jadi, jangan menghabiskan waktu berjam-jam untuk mencoba mendandani seluruh basis kode. Cukup prettify cukup kode yang Anda perlukan untuk menambahkan fitur selanjutnya.
Singkatnya ... biarkan setiap bagian kode dalam keadaan lebih baik daripada saat Anda pertama kali tiba.
sumber
Jika ini murni format, Anda mungkin lebih baik menginvestasikan waktu dalam mengajar printer cantik bagaimana Anda ingin kode Anda diformat. Itu agak mahal di muka, tapi saya membayangkan Anda akan mengganti timer itu dalam 2-3 penggunaan.
Jika itu sebenarnya refactoring, mungkin juga tidak. Secara konseptual kode bersih cenderung lebih mudah untuk dimodifikasi dan "selalu bersih" mengurangi godaan untuk membiarkan sesuatu melewatinya hanya karena ada kode bau lainnya.
sumber
Ini sedikit membantu, tetapi tidak layak menghabiskan banyak waktu untuk itu. Pastikan juga perbaikan Anda menambahkan variabel scoping, RAII, grup copy / paste kode dll. Jika Anda melakukan semua itu, itu menjadi 1000x lebih mudah ketika Anda harus memahami apa yang dilakukan kode setelah satu tahun atau lebih.
sumber
Anda harus menghasilkan kode bersih, tetapi seharusnya tidak memakan waktu berjam-jam.
Untuk C, ada program gnu-gnu-indent gnu-indent , di gerhana, setidaknya ada pemformat kode untuk Java, dan saya kira ada alat untuk sebagian besar bahasa lain juga. Seharusnya hanya beberapa klik untuk membuat indentasi file dengan benar, dan beberapa menit, jika Anda ingin melanggar aturan untuk tujuan tertentu - seperti yang saya lakukan untuk pernyataan kasus sakelar pendek:
yang sulit ditentukan.
sumber
Jika Anda berpikir sesuatu terlihat bersih dengan membaca sepintas lalu, Anda berkonsentrasi pada sesuatu yang dangkal yang dapat otomatis.
Baca artikel klasik ini tentang "Membuat kode yang salah terlihat salah" dan Anda akan melihat persis mengapa orang biasanya menganggap lekukan (yang dapat dilakukan secara otomatis) tidak penting:
http://www.joelonsoftware.com/articles/Wrong.html
Khususnya daftar ini:
sumber
"Jam"? Yah, saya akan mengatakan jawaban Anda adalah "dan", bukan "atau": ya, Anda sedang OCD, tetapi ada beberapa manfaatnya.
Mungkin.
Apakah ini membuat kode Anda lebih mudah dibaca dengan cepat? Apakah lebih mudah untuk membaca sekilas, untuk mencari tahu apa yang berhenti dan mulai dari mana, untuk menemukan fungsi, variabel, dll? Apakah ini membuat cara kode Anda bekerja lebih jelas? Apakah proses pembersihan memaksa Anda untuk meninjau kembali beberapa keputusan desain, dan memangkas kode mati atau menghapus solusi setengah matang yang akhirnya Anda tinggalkan? Jika demikian, itu benar-benar memiliki nilai.
Di sisi lain, jika Anda sudah menemukan cara yang salah untuk menarik rasa estetika Anda sendiri tanpa benar-benar membuat kode Anda lebih mudah untuk dikerjakan, maka ya, itu buang-buang waktu.
Sedangkan saya, saya cenderung jatuh sendiri pada akhir OCD ini - tapi saya tidak akan berhenti. Tindakan memberikan dokumentasi untuk suatu kelas atau fungsi memaksa saya untuk berpikir tentang bagaimana hal itu benar-benar bekerja - saya menulisnya sehingga seseorang yang bukan saya dapat memahaminya. Dan jika saya mendapati diri saya melemparkan banyak peringatan, peringatan, dan permintaan maaf untuk alasan mengapa kode bekerja seperti itu, itu adalah peringatan yang cukup kuat yang membutuhkan satu putaran penyesuaian sebelum saya menyatakan sudah selesai.
sumber
Pertama, tidak ada yang salah dalam membuat kode Anda terlihat cantik karena pada akhirnya Anda ingin bangga dengan kreasi dan presentasi / pemformatan kode Anda.
Namun saya akan berhati-hati untuk tidak memformat berlebihan kode Anda demi rekan kerja Anda atau pengembang masa depan. Bagimu cantik mungkin tidak cantik bagiku. :)
sumber
Anda mengenali masalah (perilaku kompulsif) dan gejala (memformat secara obsesif).
Bagaimana dengan penyebab dan penyembuhannya?
Kadang-kadang gejala-gejala ini merupakan tanda sudah saatnya untuk melakukan perubahan yang berani atau melanjutkan.
Meskipun judulnya lebih rendah, buku Yourdon memiliki banyak saran yang bermanfaat dan bagi banyak organisasi, membuat deskripsi yang sangat nyata.
http://dev.co.ua/docs/Edward%20Yourdon%20-%20Death%20March.pdf
Anda tampak cukup berwawasan dan saya pikir Anda mungkin tahu jawabannya.
Sekarang, beri diri Anda izin untuk menindaklanjutinya.
sumber
Sapi Suci!
Kalian belum pernah mendengar indentasi?
itu utilitas pemformatan kode yang sudah ada selama lebih dari 20 tahun. Ada banyak opsi sehingga kode Anda dapat diformat sesuai keinginan, secara otomatis.
ermm - tetapi hanya bekerja pada C dan beberapa tetapi tidak semua C ++ .... (wtf? mengapa GNU tidak memutakhirkannya?)
sumber