Apakah ada manfaat dengan obsesi membuat kode "terlihat cantik"?


34

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?


8
Saya hanya menggunakan Ctrl-E, D;)
Town

1
Jika ini tidak akan bertahan berjalan dengan aturan pemformatan perusahaan, manfaatnya cukup kecil.

2
Mengapa tidak membuat program untuk memformat kode Anda secara otomatis, jadi Anda akan senang dan Anda tidak akan membuang waktu?
Jetti

1
Memformat membuatnya mudah dibaca sehingga itu penting, tapi pasti "pintar" - gunakan pemformat otomatis. Jika format itu tidak cukup baik - maka pada saat itu Anda mungkin OCD.
Catchops

1
Yah @ Taylor kerangka Laravel Anda luar biasa cantik
Mr.Web

Jawaban:


32

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?).


1
Mengapa paragraf kedua semuanya tebal?
Steven Jeuris

5
@FrustratedWithFormsDesigner: Ini bukan penekanan jika setengah dari posting ditekankan. : P
Jon Purdy

2
@ Seven, @ Jon - dicatat dan diedit.
Morgan Herlocker

3
Rantai komentar yang sedikit ironis. ;)
TaylorOtwell

2
@StuperUser, lebih seperti malas dan membuat semuanya otomatis :)

10

Jika Anda tidak mengubah apa pun yang membuatnya lebih mudah dipahami, maka ya, Anda membuang-buang waktu.


3
+1: Total limbah. Orang lain memiliki pendapat berbeda dan cantik dan akan memformat ulang kode Anda dan juga menulis pertanyaan tentang mengapa Anda tidak mengikuti format ideal mereka.
S.Lott

Menempatkan semua kode pada satu baris tidak mengubah fungsinya, tetapi menggunakan baris baru membuatnya lebih dimengerti.
Steven Jeuris

@ Seven Jeuris: Apakah Anda berbicara tentang kebingungan? Jika demikian, mengapa? Pertanyaannya tidak terdengar seperti itu. Itu terdengar seperti buang-buang waktu. Di mana Anda mendapatkan gagasan bahwa kode itu diformat dengan sangat buruk sehingga tidak dapat dibaca?
S.Lott

@ S.Lott: Tidak, saya tidak berbicara tentang kebingungan. Menempatkan semua kode pada satu baris akan menjadi kebingungan yang mengerikan. :) Saya mencoba menjelaskan bahwa walaupun tidak 'mengubah' apa pun, ini dapat membuat Anda memahami kode dengan lebih baik. Lihatlah jawaban Neville untuk penjelasan yang lebih terperinci. P: Lebih lanjut saya percaya ini adalah jawaban yang benar-benar kosong. Tentu saja, ketika Anda mengubah sesuatu yang tidak memungkinkan Anda untuk lebih memahami kode yang tidak berguna, tapi itu sangat subjektif, dan itu sebenarnya pertanyaannya.
Steven Jeuris

6

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


5

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 ....


Anda mencegah saya menulis jawaban saya sendiri. ; p Sangat baik!
Steven Jeuris

+1 untuk mencatat bahwa struktur dan penamaan konvensi format truf sangat penting.
Morgan Herlocker

4

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.


3

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.

Teorema Dasar Pemformatan mengatakan bahwa tata letak visual yang baik menunjukkan struktur logis dari program. Membuat kode terlihat cantik adalah sesuatu yang bernilai, tetapi nilainya kurang dari menunjukkan struktur kode. [hal 732, Kode Lengkap Edisi 2, Steve McConnell]

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.

Ini akan membuat perubahan lebih sulit untuk dikenali dan akan menyebabkan konflik gabungan yang tidak perlu jika anggota tim lainnya mengedit file. Jika Anda harus membuat perubahan pemformatan, periksa apakah anggota tim lain tidak bekerja pada file itu. [Paraphrased, Pg 93, Kontrol Versi Pragmatis Menggunakan Subversion, Edisi ke-2]

Martin Fowler juga berbicara tentang 'memakai dua topi' dan beralih di antara mereka sepanjang hari. Satu topi untuk menambahkan fitur, satu topi untuk refactoring.

  1. Anda mempertimbangkan untuk menambah fitur baru (Feature Hat)
  2. Anda membaca dengan teliti kode yang ada untuk mendapatkan pemahaman, merapikan saat Anda pergi. (Topi Refactoring)
  3. Komit Perubahan.
  4. Tambahkan fitur. (Fitur Topi) dan sebagainya ....

[Paraphrased hal 57ish, Refactoring, Martin Fowler]

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.


2

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.


1

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.


1

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:

 switch (foo) {
      case a:  foo (a);             break; 
      case b:  foob ();             break;
      case c:  /* intent. empty */
      case d:  foocd ();            break; 
      default: allPrettyAligned (); break; 
 }

yang sulit ditentukan.


1

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:

OK, sejauh ini saya telah menyebutkan tiga level pencapaian sebagai programmer:

1. Anda tidak tahu bersih dari yang najis.

2. Anda memiliki ide dangkal kebersihan, sebagian besar pada tingkat kesesuaian dengan aturan pengkodean.

3. Anda mulai mencium sedikit petunjuk tentang kenajisan di bawah permukaan dan mereka cukup mengganggu Anda untuk menjangkau dan memperbaiki kode.

Namun, ada level yang lebih tinggi, yang benar-benar ingin saya bicarakan:

4. Anda dengan sengaja membuat kode sedemikian rupa sehingga hidung Anda untuk kenajisan membuat kode Anda lebih mungkin benar.

Ini adalah seni asli: membuat kode yang kuat dengan menciptakan konvensi yang membuat kesalahan menonjol di layar.


0

"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.


0

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. :)


0

Anda mengenali masalah (perilaku kompulsif) dan gejala (memformat secara obsesif).

Bagaimana dengan penyebab dan penyembuhannya?

  • Apakah Anda terlalu banyak bekerja?
  • Apakah Anda frustrasi, bosan, cemas?
  • Apa tugas Anda selanjutnya? Apakah ini sesuatu yang tidak ingin Anda lakukan?
  • Kapan terakhir kali Anda berlibur? Promosi? Pengakuan atas suatu pencapaian?
  • Apakah ini masalah yang berhubungan dengan burnout?
  • Apakah Anda di Death March?

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.


-4

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?)


2
Terima kasih telah berkontribusi atas jawaban pertama Anda. Tidak yakin siapa yang memilih, tapi silakan lihat panduan untuk menjawab pertanyaan tentang programmer Stack Exchange Programmer.stackexchange.com/questions/how-to-answer . Respons Anda mungkin dapat direvisi dengan kriteria tersebut untuk memenangkan satu atau dua suara.
PengembangDon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.