Panjang file 'Direkomendasikan' dan lebar garis [ditutup]

9

Saya ingin tahu apakah ada yang tahu rekomendasi dari sumber yang memiliki reputasi baik untuk jumlah maksimum baris kode untuk file yang diberikan. Misalnya, Google's Closure Linter merekomendasikan agar setiap baris tidak boleh melebihi 80 karakter.

Devin G Rhode
sumber
Contoh Anda tidak sesuai dengan pertanyaan. Pertanyaan Anda menanyakan tentang baris per file dan contoh Anda adalah karakter per baris.
Jason S
2
Ini konsep yang sama - area persegi yang harus Anda gulir, apakah itu horisontal atau vertikal.
Devin G Rhode

Jawaban:

11

File harus cukup pendek sehingga Anda dapat menemukan fungsi atau metode apa pun tanpa menggulir bolak-balik beberapa kali, atau harus mengingat string pencarian. Metrik yang saya gunakan adalah jumlah waktu yang saya habiskan untuk mencari kode di dalam file dibandingkan membacanya. Jika itu menjadi terlihat, saatnya untuk mempartisi file atau kelas.

Ukuran yang baik untuk blok kode dasar cukup pendek, baik lebar dan tinggi, sehingga Anda dapat memproyeksikan nyali itu selama tinjauan kode grup, dan semuanya cocok tanpa font yang sangat kecil sehingga pria di belakang ruang konferensi tidak bisa membacanya. Ukuran ini juga membantu jika Anda pernah dipanggil untuk menjelaskan beberapa kode ketika yang Anda miliki hanyalah perangkat seluler atau tablet.

hotpaw2
sumber
Ini adalah panduan yang paling membantu, terima kasih banyak!
Devin G Rhode
Apakah ada panjang file yang terlalu pendek ? Saya punya proyek dengan 35 file dengan panjang rata-rata ~ 200 baris.
Dan
1
@ Dan saya akan berani "tidak" sebagai jawabannya. Jika membuka file terlalu sulit dalam pengaturan Anda, mungkin ini saatnya untuk memperbaiki pengaturan Anda (yaitu vim plugins, IDE yang lebih baik, apa pun yang dilakukan emacs)
Mike Graf
@Dan: File terlalu pendek? Mungkin jika Anda menghabiskan lebih banyak waktu mencari file kecil yang benar untuk beberapa LOC daripada menemukan mereka dalam beberapa file yang secara logis dan terkait erat (tapi tidak terlalu lama).
hotpaw2
9

Tidak ada hal seperti itu, dan jika ada, itu akan sangat tergantung pada bahasa apa yang Anda gunakan (melakukan hal yang sama di assembler versus C # atau Java misalnya).

Untuk bahasa tingkat yang lebih tinggi, Anda dapat melihat diskusi SO ini . Untuk Java / C #, 10-20 baris per metode adalah maksimum yang direkomendasikan oleh Bob Martin. Tidak ada diskusi mengenai file, karena tidak relevan dan tergantung pada apa yang seharusnya dilakukan oleh kelas.

Sehubungan dengan 80 karakter per batas baris - ini adalah kemunduran ke hari kartu punch. Karena itu, ketika garis tumbuh terlalu panjang, keterbacaan menderita.

Oded
sumber
5
+1: Adalah baik untuk menjaga garis kurang dari 80 karakter; lebih mudah dibaca dan memberi lebih banyak ruang untuk jendela berdampingan
Donal Fellows
6
Secara pribadi, saya pikir keterbacaan menderita ketika sebuah baris dikerutkan menjadi beberapa baris agar sesuai dengan 80 atau kurang. Ada juga waktu yang terbuang untuk memutuskan di mana harus beristirahat, atau berdebat tentang hal itu.
ergosys
5

Panjang file dan garis adalah pengukuran efek sekunder dari kompleksitas dan karenanya sangat bervariasi. Yang harus Anda tuju adalah kode tanpa kerumitan yang tidak perlu, bukan jumlah baris maksimum tertentu.

File yang panjang cenderung menunjukkan bahwa metode, subrutin atau kelas terlalu rumit (melakukan terlalu banyak hal, tidak cukup faktor, dll)

Garis panjang cenderung mengindikasikan bahwa ekspresi terlalu rumit.

Mereka adalah bau yang mengindikasikan masalah kode potensial, bukan metrik target yang terdefinisi dengan baik.

Rein Henrichs
sumber
3

Panjang garis harus sedemikian rupa sehingga Anda tidak perlu menggulir layar untuk melihat seluruh baris. Itu tergantung pada ukuran dan resolusi monitor.

Metode dan fungsi adalah yang terbaik jika dapat memuat satu layar.

File tidak boleh terlalu panjang. Yang terbaik adalah file pendek, di mana mudah untuk memahami kelas, dan implementasinya.
Suatu ketika saya mengerjakan proyek yang memiliki 10 file klines. Itu seperti membaca buku yang sangat rumit. Apakah saya perlu memberi tahu berapa banyak masalah yang disebabkan implementasi?

BЈовић
sumber
Kode seharusnya tidak memerlukan pengaturan font besar monitor kecil, terutama untuk ulasan kode grup.
hotpaw2
"Panjang garis harus sedemikian sehingga Anda tidak perlu menggulir layar untuk melihat seluruh garis." - bagaimana jika editor Anda membungkus?
Dan Dascalescu
3

80 karakter!

Saya ingat bahwa saya dulu melihat file kode sumber untuk program penagihan sekitar 80 halaman dan lebih banyak ketika saya melakukan COBOL. Tentu saja, saya tidak dapat melihat bahwa ini adalah praktik yang lazim tetapi 80 karakter sama-sama menggelikan.

Dari tampilan ukuran kelas, jika Anda mencoba menerapkan saran ini pada kelas khusus Pelanggan yang memiliki sekitar 80 properti dan sekitar 20 metode, Anda harus memecah kelas menjadi beberapa yang lain dan membuat kodenya sangat berantakan.

Tidak ada kesempatan
sumber
1
Benar. 80 karakter berarti bahwa Anda dapat mencetak bagian kode untuk bertukar pikiran dengan ukuran font yang wajar pada lembar A4 / Letter potret. Ini juga berarti bahwa pada monitor komputer pengembangan yang masuk akal, Anda dapat melihat tiga salinan kode sumber secara berdampingan tanpa menggulir horizontal untuk melakukan penggabungan tiga arah (Lucu bahwa 80x8x3 adalah 1920 * 8 ').
Mark Booth
2

Saya mencoba untuk membuat kelas dan metode singkat, tetapi jangan terlalu khawatir tentang panjang garis. Pada hari-hari ini layar lebar dan pengidentifikasi panjang, saya pikir delapan puluh karakter terlalu sedikit. Dibutuhkan beberapa pekerjaan untuk memecahkan pernyataan sehingga mudah dibaca, dan dengan batas karakter delapan puluh, itu terjadi cukup sering. Saya pikir sekitar 120 atau 130 kolom per baris lebih masuk akal.

kevin cline
sumber
Saya menggunakan monitor 22 "terbalik secara vertikal, yang memberi saya 1080 piksel di setiap layar (dan secara vertikal, saya dapat memiliki 104 baris kode yang terlihat sekaligus!). Menjaga lebar garis hingga 90 karakter atau kurang bermanfaat dalam skenario seperti ini.
Roy Tinker