Ada beberapa komentar tentang ruang putih yang sudah dalam diskusi tentang penempatan kurung kurawal.
Saya sendiri cenderung menaburkan kode saya dengan garis-garis kosong dalam upaya untuk memisahkan hal-hal yang berjalan bersama dalam kelompok "logis" dan mudah-mudahan membuatnya lebih mudah bagi orang berikutnya untuk membaca kode yang baru saja saya buat.
Bahkan, saya akan mengatakan saya menyusun kode saya seperti saya menulis: Saya membuat paragraf, tidak lebih dari beberapa baris (pasti lebih pendek dari 10), dan mencoba membuat setiap paragraf mandiri.
Sebagai contoh:
- di kelas, saya akan mengelompokkan metode yang berjalan bersama, sambil memisahkannya dengan garis kosong dari grup berikutnya.
- jika saya perlu menulis komentar saya biasanya akan meletakkan baris kosong sebelum komentar
- dalam suatu metode, saya membuat satu paragraf per langkah proses
Semua dalam semua, saya jarang memiliki lebih dari 4/5 baris berkerumun, yang berarti kode yang sangat jarang.
Saya tidak menganggap semua ruang putih ini sia-sia karena saya benar-benar menggunakannya untuk menyusun kode (karena saya menggunakan indentasi sebenarnya), dan karena itu saya merasa layak dengan layar yang dibutuhkan.
Sebagai contoh:
for (int i = 0; i < 10; ++i)
{
if (i % 3 == 0) continue;
array[i] += 2;
}
Saya menganggap bahwa kedua pernyataan tersebut memiliki tujuan yang jelas dan karenanya perlu dipisahkan untuk membuatnya jelas.
Jadi, bagaimana Anda benar-benar menggunakan (atau tidak) baris kosong dalam kode?
sumber
if (i % 3 != 0) { <newline here> array[i] += 2; <newline here> }
, tapi saya mengerti maksud Anda :)for (int i = 0; i < 10; i += 3) { <newline here> array[i] += 2; <newline here> }
tapi saya mengerti maksud Anda :)Jawaban:
Selalu
Spasi sangat penting untuk kode yang dapat dibaca bersih. Baris kosong (atau dua) membantu secara visual memisahkan blok kode logis.
Misalnya, dari Steve McConnell's Code Complete, edisi Kedua bab Tata Letak dan Gaya:
sumber
Ya untuk kejelasan.
Seperti yang saya lakukan dalam jawaban ini.
sumber
Saya lakukan tetapi saya memastikan saya mendokumentasikannya dengan meletakkan
(This line intentionally left blank.)
di telepon
sumber
Ya, tapi saya tidak menyalahgunakannya.
Saya telah melihat kode di mana setiap baris kode di dalam metode dipisahkan oleh baris kosong, dan dua baris kosong digunakan di mana pemisahan logis terjadi. Itu hanya membuatnya lebih mudah dibaca menurut pendapat saya. Saya juga melihat spasi putih digunakan untuk membuat keberpihakan gila, seperti ini:
Penyalahgunaan spasi putih horisontal yang sama dapat diterapkan ke spasi putih vertikal. Seperti alat apa pun, gunakan dengan bijak.
sumber
Saya banyak dikritik karena menulis kode saya dengan cara ini. Saya tidak mengerti mengapa ada orang yang tidak mau melakukannya dengan cara ini.
Keterbacaan itu sangat penting ketika Anda kembali ke proyek setelah jangka waktu yang lama dan saya pernah mendengar pepatah "Selalu tulis kode jika orang berikutnya yang membacanya adalah Psikopat yang mengetahui lokasi Anda".
sumber
undo
beberapa kali melakukan pekerjaan (memformat perang ini mengarah pada produktivitas, jadi saya tidak akan langsung menghapus komentar dan spasi, tetapi preferensi saya menentangnya sebagian besar).Saya tidak selalu menulis perangkat lunak, tetapi ketika saya melakukannya, saya menggunakan baris kosong untuk kejelasan.
sumber
Saya semua membuat kode sejelas mungkin, dan spasi putih sering merupakan alat yang berguna dalam upaya itu. Tapi jangan lupa refactoring:
Karena Anda memiliki beberapa anggota terkait, mereka adalah kandidat untuk kelas baru.
Setiap kali kode tidak cukup jelas untuk menginginkan komentar, saya bertanya apakah saya bisa menolak untuk membuat kode cukup jelas sehingga tidak perlu komentar.
Mengapa tidak membuat satu metode untuk setiap "paragraf"?
Jika Anda berakhir dengan banyak metode di kelas Anda, lihat catatan saya di atas tentang mengekstraksi kelas baru.
sumber
Iya nih. Itu membuatnya lebih mudah untuk memindai file secara visual. Di antara hal-hal lain, hal itu membuatnya lebih jelas dengan baris mana komentar berjalan.
sumber
Saya menggunakan garis kosong hemat dan konsisten, dan konsisten lebih penting daripada hemat. Namun:
Sebagian besar tidak kontroversial; mungkin berikut ini. Saya perhatikan bahwa notasi K&R dengan kawat gigi terbuka di ujung jalur sering kali diikuti oleh garis kosong. Saya pribadi tidak suka kawat gigi di ujung garis dan mencampurnya dengan garis kosong setelah kawat gigi membuat omong kosong notasi (IMNSHO). Letakkan brace terbuka di baris berikutnya, dengan sendirinya, dan Anda memiliki sebagian besar baris kosong (dan, IMNSHO, kode lebih mudah dibaca). Jika Anda harus menggunakan penjepit K&R di ujung garis, jangan sia-siakan penghematan ruang vertikal dengan garis-garis kosong yang tidak ada.
sumber
Tulis apa yang paling mudah dibaca dan paling tidak mengejutkan.
Fungsi ini tidak memerlukan 12 baris komentar dokumen.
Bahkan, tidak perlu ada komentar.
Atau garis kosong.
Mereka akan mengurangi esensinya.
sumber
Di dalam fungsinya? Jarang
Jika saya memiliki blok berbeda yang jelas itu refactoring ke fungsi baru. Jika beberapa kasus tidak sepadan.
Bagi saya kosongkan baris di dalam fungsi adalah salah satu "praktik terbaik" yang paling salah.
sumber
Sering
Gunakan untuk blok kode logis yang diproses sama. Setelah Anda menambahkan komentar untuk menunjukkan bahwa Anda melakukan langkah yang berbeda - saatnya untuk Mengekstrak Metode.
Ruang putih yang bagus
Ruang Putih Buruk
vs.
vs.
sumber
connection.close()
kecloseConnection(connection)
item1
danitem2
variabel global yang berkomunikasi melalui metode? Ya!Saya tidak hanya menggunakan spasi putih, saya menggunakan kawat gigi untuk kejelasan.
Kawat gigi yang saya gunakan untuk mengatakan ini berpotensi berfungsi.
sumber
Pada suatu waktu, saya akan memercikkan garis kosong secara bebas di seluruh kode saya. Saat ini, saya cenderung lebih hemat. Saya pikir ini adalah bagian dari apa yang dibicarakan oleh Steve Yegge di sini :
Saya pada dasarnya setuju dengannya. Jauh lebih baik untuk mengompres kode sehingga Anda bisa mendapatkan sebanyak mungkin di satu layar daripada terlalu banyak ruang. Itu bukan untuk mengatakan bahwa Anda tidak boleh menggunakan garis kosong. Hanya saja saya pikir kecuali jika pengelompokan yang Anda coba ciptakan tidak meningkatkan keterbacaan secara berlebihan, itu lebih berbahaya daripada baik.
sumber
Seorang Profesor Emeritus Memberi Dua Nasihat Besar
sumber
Aturan praktis saya adalah ini:
Jika saya kesulitan membaca kode yang saya tulis kemarin, saya mungkin perlu mengekstrak satu atau tiga metode.
Jika definisi kelas saya terlalu panjang untuk dibaca dengan mudah, saya mungkin perlu mengekstrak modul / antarmuka / objek.
Definisi metode: tambahkan baris
Modul / Definisi kelas: tambahkan dua baris
sumber
Saya suka memikirkan ruang putih dengan cara yang sama seperti paragraphing. Anda mengelompokkan garis-garis yang berkontribusi pada satu ide.
Jika Anda memulai ide baru atau sisi baru dari ide yang sama, Anda memulai paragraf baru - seperti ini.
Dalam kode imperatif, saya mengelompokkan tugas-tugas yang melakukan satu tugas kohesif; dalam kode deklaratif, saya mengelompokkan kode-kode yang menggambarkan satu pernyataan yang kohesif dari suatu gagasan.
Anda jelas tidak kesulitan melakukan hal itu dalam bahasa Inggris (beberapa orang sangat buruk dengan paragraphing), jadi dengan sedikit latihan, menerapkan keterampilan yang sama pada kode seharusnya tidak perlu sama sekali.
sumber
Garis kosong adalah suatu keharusan menurut saya. Saya menggunakannya untuk memisahkan blok kode logis yang berbeda. Membuat kode dapat dibaca. Kode yang dapat dibaca adalah kode yang baik;)
Sepotong kode ideal saya adalah setiap blok logika dipisahkan oleh baris kosong dan komentar di atas setiap blok yang memiliki logika utama.
Tentu saja, jika orang berlebihan melakukannya dengan menambahkan beberapa baris kosong di mana-mana, saya merasa sangat menjengkelkan :(
sumber
Saya hanya menggunakan spasi putih dalam fungsi / metode untuk memisahkan deklarasi dan kode.
Jika Anda merasa perlu memiliki beberapa baris untuk memisahkan sub-blok kode yang menerapkan beberapa logika, maka mereka harus menggunakan fungsi / metode pribadi lain. Terserah kompiler Anda untuk tidak membuat overhead yang terlalu besar.
biasanya, dalam peusdo-code:
Jika saya melihat spasi putih yang tidak berguna, saya biasanya merasa ngeri.
sumber
Ruang putih sangat berharga.
Begini masalahnya ... kutu buku yang menulis kode rumit seperti E = MC 2 hebat dalam memamerkan keterampilan pemrograman mereka.
Sekarang mari kita melompat ke depan enam bulan, dan ini jam 2 pagi di pagi hari dan sistem yang belum dilihat dalam enam bulan telah rusak pada baris E = MC 2 . Ini hampir mustahil untuk di-debug ... semua orang ketakutan.
Misalkan kodenya lebih mirip ini ...
Jika 2:00 pagi dan kode rusak. Pandangan sekilas akan menunjukkan kepada Anda bahwa saluran tiga seharusnya
Masalah terpecahkan.
Intinya ... gunakan spasi.
sumber
Seperti yang telah dinyatakan oleh banyak orang lainnya, baris kosong memudahkan pembacaan kode. Namun, ada beberapa bahasa yang menerapkan standar ini. Salah satu yang bisa saya pikirkan dari atas kepala saya (bukan tentang garis kosong tetapi indentasi yang tepat) adalah Python.
sumber
Saya setuju, saya menggunakan spasi putih dengan cara yang sama. Namun, jika saya menemukan diri saya menggunakan spasi untuk memecah metode menjadi terlalu banyak bagian, itu pertanda saya mungkin perlu untuk memperbaiki kode itu menjadi beberapa metode. Terlalu banyak bagian logis dalam suatu metode mungkin menandakan bahwa metode tersebut akan lebih sulit untuk diuji.
sumber
Saya menggunakannya untuk memisahkan kode menjadi unit logis. Saya telah melihat sangat sedikit sampel kode yang tidak menggunakan baris kosong, tentu saja kekecewaan dikecualikan.
sumber
Jawaban Psikopat adalah yang terbaik, tetapi saya akan menggantinya dengan mengasumsikan bahwa orang berikutnya adalah idiot, dan mereka akan menganggap diri Anda benar, dan Anda ingin membuktikan bahwa mereka salah.
Sama pentingnya dengan keterbacaan adalah penggunaan komentar. Saya membuka setiap fungsi atau subrutin dengan blok komentar, menjelaskan dalam teks yang jelas, apa itu, apa fungsinya, apa argumennya, dan apa hasil yang diharapkan (termasuk daftar kondisi kesalahan). Maka tidak ada pertanyaan tentang apa yang dimaksudkan dan / atau dirancang untuk dilakukan. Apa yang dicapainya mungkin berbeda-beda, tapi itu jauh di jalurnya.
Saya pikir terlalu banyak coders menganggap bahwa itu akan mereka, diri mereka sendiri yang akan melakukan "perbaikan" pada kode, atau hanya tidak peduli.
sumber
Garis kosong itu penting. Namun, membuang seluruh baris kosong pada brace pembuka mengurangi jumlah kode yang dapat Anda lihat di layar penuh. Seharusnya:
(Jangan mulai saya menempatkan brace '{' pada baris yang sama dengan 'untuk' ... itu meshuggah).
sumber
Iya nih. Agar mudah dibaca. Kadang-kadang saya bahkan memasukkan baris kosong dalam kode yang tidak saya tulis. Saya merasa lebih mudah untuk memahami kode ketika mereka memiliki pengelompokan logis melalui baris kosong - seperti Anda dapat "membaca cepat" melaluinya.
sumber
Kita harus menggunakan baris kosong di antara kode kunci seperti yang kita lakukan saat kita menulis surat.
Misalnya, di antara fungsi, atau di dalam fungsi saat kami menyelesaikan ...
Orang-orang akan berterima kasih kepada Anda kode yang bersih jika mereka harus melakukan pemeliharaan;)
sumber
Kami menggunakan spasi putih yang direkomendasikan oleh Microsoft StyleCop. Selain dari keterbacaan dan konsistensi saya telah menemukan bahwa (bersama dengan ukuran kelas kecil) kode yang ditata dengan benar membuatnya lebih mudah untuk mengelola penggabungan ketika berbagai orang dalam tim kebetulan bekerja di area yang sama.
Saya tidak yakin apakah itu hanya imajinasi saya, tetapi alat yang berbeda tampaknya melakukan pekerjaan yang lebih baik untuk mengenali di mana kode yang setara dimulai dan selesai ketika menggabungkan ketika ditata dengan rapi. Kode yang ditata dengan baik adalah sukacita untuk digabung. Ok, itu bohong - tapi setidaknya rasa sakit itu disimpan ke tingkat yang dapat dikelola.
sumber
Jangan pernah baris kosong, tidak di seluruh file. Itu tidak berarti tidak ada jeda dalam kode:
Baris kosong adalah untuk membuka bagian dari kode untuk dikerjakan, Anda memiliki beberapa hotkey di editor Anda untuk membawa Anda ke baris kosong sebelumnya / berikutnya.
sumber