Bagaimana cara mengikuti praktik terbaik batas 80 karakter saat menulis kode sumber?

15

Jadi seperti yang Anda tahu ada praktik terbaik yang dikatakan

Batasi sebaris kode sumber dalam 80 karakter.

Berikut adalah 2 tautan:

Mengapa 80 karakter batas 'standar' untuk lebar kode?

Apakah batas 80 karakter masih relevan pada saat monitor layar lebar?

Dan saya yakin Anda bisa lebih baik jika Anda mencari praktik terbaik ini.

Tetapi saya menemukan ini sangat sulit, berikut ini contohnya:

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> myReference

Jadi Anda membuat indentasi setiap kelas dan setiap metode dan setiap pernyataan.

Dan saya sudah berada di kolom 60 pada akhir 'e' terakhir yang saya miliki di 'Referensi saya'.

Saya memiliki 20 spasi yang tersisa untuk memanggil konstruktor dan menetapkan objek ke referensi yang saya miliki.

Maksud saya apakah ini benar-benar terlihat lebih baik:

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> myReference 
                = new HashMap<String, List<MyInterfaceHere>>(); 

Apa praktik terbaik di sini?

Koray Tugay
sumber
6
Kami membuatnya 140. 80 mungkin bagus di zaman layar yang lebih kecil dan printer yang lebih kecil
tgkprog
7
praktik terbaik kecuali jika Anda menggunakan versi End-Of-Life seperti 5/6 kemungkinan akan menjadi final Map<String, List<MyInterfaceHere>> myReference = new HashMap<>();(80 karakter dengan lekukan seperti pada contoh Anda)
agas
4
Sebuah meta-best-practice bukanlah untuk secara membabi buta menggunakan praktik terbaik dari dua puluh tahun yang lalu. Kembali ketika 17 "CRT memakai resolusi 1280x1024, batas karakter yang lebih rendah masuk akal, tetapi tidak hari ini.
TMN
2
Perhatikan bahwa salah satu manfaat menggunakan kolom teks yang sempit daripada melebar di seluruh ruang yang tersedia di layar Anda, adalah kemampuan untuk dengan mudah melihat beberapa bagian kode berdampingan. 80 chars * 7 pixels/char = 560 pixels per file. Ini memungkinkan dua file (1120 px) cocok dengan nyaman pada layar lebar 1280 px, atau tiga (1680 px) pada layar 1920 px, dalam kedua kasus menyisakan ruang ekstra untuk nomor baris, bilah gulir, sigil, dan elemen UI lainnya. . Atau bahkan garis yang sedikit lebih panjang.
8bittree
3
@ 8bittree Saya bisa melihat kode berdampingan - pada dua monitor. Berkembang pada satu monitor sama seperti mengendarai mobil dengan hanya satu roda.

Jawaban:

18

Praktik terbaik harus "membatasi panjang garis sehingga Anda, semua kolega Anda, dan semua alat yang Anda gunakan puas dengan itu", ditambah beberapa akal sehat. 80 karakter tampaknya sangat rendah dan cenderung mengurangi keterbacaan. Saya pernah benar-benar ditipu oleh garis seperti ini:

/* Very long comment to the end of the line */ realCode ();

di mana panggilan fungsi tidak terlihat di layar (juga tidak terlihat di layar rekan mana pun) tanpa indikasi.

Saya mengatur editor saya untuk menampilkan margin 100 kolom, ditambah penulisan ulang kode pada layar, sehingga semuanya selalu terlihat saat mengedit, dan garis yang terlalu panjang cenderung secara manual dibagi menjadi dua atau kadang-kadang lebih banyak baris. Doakan agar format editor Anda memecah pernyataan dengan baik jika itu memformat otomatis. Gunakan gaya pengkodean yang tidak mengarah ke pernyataan yang sangat bersarang. (Beberapa orang membuat sarang dari dua puluh jika-pernyataan diikuti oleh ekor dua puluh yang lain yang mengarah ke lekukan yang dalam 200 karakter, dan tidak ada yang bisa mencari tahu mana lagi milik yang jika).

Dalam kasus khusus Anda, Swift menemukan cara untuk menghindari ini: Variabel "let" (yang hampir sama dengan "final" dalam bahasa lain) harus diberi nilai tepat satu kali sebelum digunakan, tetapi tidak harus dalam deklarasi , sehingga Anda dapat membagi garis merepotkan Anda menjadi dua pernyataan independen.

PS. Saya telah menemukan garis, dalam kode yang ditulis manusia, yang terdiri lebih dari 400 karakter. Dengan kata lain, Anda harus menggulir selama berabad-abad untuk membaca sisa baris, bahkan pada monitor 24 inci. Saya tidak terhibur :-(

gnasher729
sumber
10
Sepertinya /* Very long comment to the end of the line */ realCode ();sudah harus melanggar beberapa aturan gaya lainnya.
Robert Harvey
3
/* Very long comment to the end of the line */ realCode ();adalah salah satu alasan mengapa IDE memiliki pemformat kode yang secara otomatis menempatkan komentar dan kode pada baris yang berbeda.
2
Itu berasal dari sumber yang sama yang menulis terkenal "jika (kondisi) \ n \ tgoto keluar; \ n \ tgoto keluar;". Hanya beberapa tahun sebelumnya.
gnasher729
Saya menemukan bahwa pengaturan panjang garis maks ke 80 karakter memaksa saya untuk berpikir dalam hal fungsi dan kelas dan OO, daripada menulis garis panjang teks untuk melakukan semuanya dalam satu bidikan. Itu membuat saya menulis program yang mudah disiapkan orang lain. Kedua, sebagian besar program (Dalam pengalaman saya) saya telah melihat di SV bekerja pada laptop mereka, dan tidak memiliki layar besar yang tersedia untuk mereka sepanjang waktu. Jadi, menulis dalam batas 80 karakter membantu semua orang. Ketiga, Anda dapat membagi layar monitor besar menjadi beberapa panel dan melihat kode secara bersamaan.
alpha_989
3

Ya, memang terlihat lebih baik. Itu sebabnya "Jangan gunakan garis yang terlalu panjang!" pepatah sangat kuat.

Adapun praktik terbaik, saya tidak pernah menggunakan ungkapan konstruktor yang sangat panjang ini. Saya akan selalu menggunakan

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> yReference = newMap();

untuk beberapa nilai impor statis yang sesuai dan ditentukan newMap(). Saya menganggapnya sebagai cacat serius di Jawa yang tidak memiliki versi bawaan.

Kilian Foth
sumber
1

Tujuannya bukan "menjaga garis hingga 80 karakter". Tujuannya adalah "membuat kode Anda mudah dibaca dan dipahami". Batas 80 karakter buatan membantu dalam keterbacaan, tetapi itu bukan aturan yang keras dan cepat kecuali tim Anda yang memutuskannya.

Anda meminta praktik terbaik, dan praktik terbaik adalah "fokus membuat kode semudah mungkin dibaca". Jika itu membutuhkan lebih dari 80 karakter, biarlah.

Bryan Oakley
sumber
1

Jangan takut menekan tombol Return. Sebagian besar bahasa modern (termasuk Java seperti dalam contoh Anda) cukup senang dengan pernyataan yang melintasi beberapa baris.

Letakkan sedikit pemikiran tentang di mana Anda melanggar garis, dan Anda bisa mendapatkan sesuatu yang sesuai dengan batas 80 kolom dan masih tetap dapat dibaca dengan sempurna. Konvensi Java coding resmi bahkan menentukan tempat-tempat yang disukai untuk memecah baris.

Dilakukan dengan benar, garis putus-putus yang rapi jauh lebih mudah dibaca daripada yang hilang dari sisi layar.

Simon B
sumber
1

Jika Anda menerapkan panjang baris / lebar kode, gunakan alat.

  • Resharper
  • Bantuan Visual
  • dll.

Pengembang memutuskan berapa panjang yang masuk akal (80, 120, 200, dll.), Tetapkan opsi itu di alat.

Setelah itu, cukup tulis kode seperti biasa tanpa memperhatikan seberapa lebar atau panjang barisnya. Setelah berfungsi dan selesai, klik kanan dan pilih Clean Up Code atau opsi serupa. Alat akan memformat kode seperti yang Anda katakan dan memecah garis panjang seperti yang ditunjukkan.

Mindless dan mudah dan setiap file sumber akan diformat dengan cara yang sama.

Jon Raynor
sumber
0

Batas 80 char mungkin sedikit terlalu pendek akhir-akhir ini, tetapi itu membantu. Saya setuju dengan semua pendapat itu bahwa kode harus diformat dengan baik juga. misalnya kode

/ * Komentar yang sangat panjang sampai akhir baris * / realCode ();

mungkin berada dalam 80 chr tetapi menciptakan kebingungan karena komentar dan opsi kode berada pada satu baris yang sama.

Untuk mematuhi batas 80 chr atau tidak adalah pilihan individu tetapi jika hal-hal terlihat dalam satu tembakan itu akan selalu memberikan pandangan dan perasaan yang nyaman untuk programmer dan pengulas lain juga.

pengguna220681
sumber