Saya baru-baru ini memperoleh kebiasaan yang saya tahu banyak dari Anda mungkin tidak suka, tetapi yang, pada akhirnya, membantu saya mengawasi struktur kode global daripada pada struktur metode berulang, (kadang-kadang) tunggal: pengelompokan angka pernyataan dalam satu baris, seperti ini:
textBox1.Text = "Something!"; textBox2.Text = "Another thing!"; textBox3.Text = "Yet another thing!";
sebagai lawan
textBox1.Text = "Something!";
textBox2.Text = "Another thing!";
textBox3.Text = "Yet another thing!";
Saya biasa melakukan itu untuk tugas yang berulang-ulang untuk menjaga kode keseluruhan "keindahan" dan untuk membantu saya melacak struktur program dengan mudah, tetapi saya akui itu mungkin bukan praktik yang baik. Saya benar-benar sering menggunakannya, jadi saya ingin tahu apa pendapat Anda tentang ini. Juga, apakah Anda berpikir bahwa siapa pun yang pernah harus mempertahankan kode saya memiliki masalah dengan pendekatan ini?
coding-style
Pengguna
sumber
sumber
Jawaban:
Saya benar-benar berpikir keterbacaan akan sangat menderita bagi Anda dan tentunya orang lain membaca kode Semua masuk akal ketika Anda menulisnya pertama kali karena itu aktif dalam pikiran Anda. Ini berbeda ketika Anda memindai kode untuk melihat variabel dan fungsi apa yang ada ... Anda menghancurkan kemampuan Anda sendiri untuk memindai kode Anda sendiri. Itu sangat tidak boleh, dan sangat buruk jika orang lain pernah membaca kode Anda.
Juga, pikirkan tentang bagaimana Anda membaca kode. Itu selalu dari atas ke bawah, gulir ke bawah. Metode Anda tidak cocok dengan ini, dan bahkan memperkenalkan salah satu masalah terburuk yang mungkin terjadi dalam membaca kode;gulir secara horizontal . Jangan pernah meremehkan betapa sulitnya membuat kode membaca. Anda tidak pernah menggulir secara horizontal, Anda tidak pernah membuat orang menggulir secara horizontal, dalam hampir semua konteks itu sangat tidak wajar.
Juga, jika masalah Anda adalah entri kode berulang-ulang ... jangan lupa Ctrl-C. Dari kode contoh Anda mungkin lebih efisien untuk mengetik semuanya secara manual, tetapi jika Anda harus menyalin banyak baris beberapa kali sepertinya akan sama efisiennya untuk menyalin satu baris ditambah satu baris baru, rekatkan x kali dan lakukan perubahan, kecil kemungkinannya untuk membuat kesalahan ketik.
Oh, dan salah ketik! Membahayakan pembacaan kode Anda seperti itu dapat membuatnya menjadi mimpi buruk untuk menemukan mana dari 50 deklarasi variabel yang Anda salah setel. Sebagian besar kompiler memberikan kesalahan pada nomor baris DAN kolom sekarang, tetapi menemukan kesalahan di baris adalah JAUH lebih mudah daripada menemukan kolom.
sumber
Satu pernyataan per baris juga memudahkan untuk melihat apa yang telah berubah dalam perbedaan berdampingan.
sumber
Meskipun contoh tidak menunjukkan ini, ada masalah lain dengan mengelompokkan beberapa pernyataan pada satu baris. Bagaimana jika salah satu dari lima pernyataan yang Anda miliki dalam satu baris memberikan pengecualian?
Jejak tumpukan Anda akan mengatakan "EBlah di baris N" ... dan sekarang Anda tidak tahu yang mana dari lima pernyataan yang melemparkan pengecualian.
(Hal yang sama terjadi dengan pernyataan yang terlalu panjang dalam bentuk apa pun.)
sumber
foo.bar[grill.boo].flip.flap[flop].mickey(minnie).marshmallow
(sintaks Java / C #). Memilah-milah kekacauan semacam itu selalu lebih baik dengan garis tambahan (dan variabel sementara ... dan 2D Of Brick Clue untuk pengembang asli).One-statement-per-line adalah gaya pengkodean yang banyak digunakan. Akibatnya, sebagian besar pengembang yang melihat kode Anda di masa depan mungkin akan meringis ketika mereka melihat beberapa pernyataan per baris. Ketika Anda terbiasa melihat sesuatu dengan satu cara, itu bisa membingungkan untuk melihatnya dengan cara lain.
Untuk alasan ini saya menyarankan untuk tidak melakukannya, kecuali dalam keadaan langka.
sumber
Saya terakhir melakukan ini 25 tahun yang lalu menggunakan bahasa yang ditafsirkan pada micros kecil yang berjalan dengan kecepatan clock rendah, di mana setiap ruang atau carriage return dihilangkan memberikan peningkatan kinerja.
Saya meringis sekarang memikirkan hal itu (meskipun itu dilakukan untuk alasan yang baik).
Sayangnya kode seperti itu sulit dibaca, dan karenanya sulit dipertahankan.
sumber
Secara sintaksis, sebenarnya tidak ada yang salah dengan itu. Itu benar-benar tergantung pada gaya pengkodean tim Anda.
Karena sebagian besar kode yang saya lihat (termasuk kode yang ada di dalam header c ++ standar) dilakukan dengan cara ini, saya akan menggunakan metode pertama Anda.
sumber
Ini benar-benar gaya pengkodean yang tidak biasa.
Saya akan merekomendasikan Anda untuk menggunakan baris kosong untuk membatasi bagian logis dari kode.
sumber
Pergi terlalu jauh ke kanan dapat menciptakan banyak masalah seperti banyak baris.
Saya harus berurusan dengan beberapa pernyataan sql dengan banyak bidang. Biasanya, saya meletakkan satu per baris, tetapi pada beberapa kesempatan, saya telah mengkonsolidasikan 3 atau 4 berturut-turut. Ini sepertinya ide bagus selama pengembangan ketika Anda harus menggulir ke atas dan ke bawah beberapa kali.
Saya menyesal kembali ke kode ini. Memiliki baris tambahan sepertinya tidak menimbulkan banyak masalah, jadi saya biasanya membersihkannya.
sumber
Setelah meletakkan tangannya di atas kepala sebentar, ia akan menggunakan fungsionalitas IDE Regex favoritnya untuk secara otomatis memisahkan semua kode yang tidak dapat dibaca itu menjadi satu pernyataan per baris.
Hanya dengan melihat sekilas pada contoh yang Anda perlihatkan sudah cukup untuk memahami betapa jauh lebih mudah dibaca adalah pendekatan kedua.
Jauh lebih mudah untuk mengikuti aliran halaman vertikal, tanpa mata Anda bergerak horizontal selamanya.
Lihatlah contoh Anda: Anda segera tahu kode itu semua tentang
Text
propertitextBox
objek yang berbeda , dan mereka berisi string sebagai nilai. Cukup mudah.sumber
Saya pribadi tidak akan menggunakan gaya seperti itu. Untuk meringkas
Pro
Cons
sumber
if (x > maxX) {x=maxX; peggedAny = true;}
. Jika setiap operasi seperti itu akan cocok dengan mudah pada satu baris, saya lebih suka memiliki delapan baris seperti itu daripada lusinan baris yang membagi pernyataan. Jika perbandingan semacam itu digunakan di tempat yang cukup, empat pernyataan formulirpeggedAny |= pegValueMinMax(ref x, minX, maxX);
mungkin lebih baik, tetapi seseorang yang membaca harus membacapegValueMinMax
untuk melihat apa fungsinya.