Sementara konvensi kode Java Sun menyarankan untuk menempatkan line break di hadapan operator, banyak pedoman lain tidak setuju dengannya. Saya tidak melihat pro dan kontra yang jelas, jadi apakah ada keuntungan menggunakan salah satu gaya ini di atas yang lain?
String longVarName = a + b + c + d +
e + f;
vs.
String longVarName = a + b + c + d
+ e + f;
Jawaban:
Saya akan meninggalkannya di satu baris dan lebih suka berpikir tentang keterbacaan dalam hal nama variabel yang mengungkapkan niat (dan fungsi).
Setelah menjadi berantakan saatnya untuk refactor :
Contoh
vs.
sumber
price * (100 + tax_ratio) / 100
atau adilprice * (1 + tax_ratio)
, tergantung pada apakahtax_ratio
dalam persen atau fraksional.Saya bisa membayangkan keterbacaan menjadi argumen
melawan
Dalam contoh kedua, operator berbaris dengan baik dan Anda dapat dengan mudah melihat dengan tanda mana variabel dimasukkan ke dalam persamaan. Saya pikir ini juga masuk akal untuk operator biner, tetapi dengan menguatkan dll, Anda harus melakukan apa pun yang lebih jelas.
sumber
Saya biasanya mengikuti pedoman gaya yang paling umum digunakan atau alat standar pengkodean tertentu. Keuntungan menggunakan gaya yang umum digunakan membawa manfaat ketika Anda membaca kode orang lain atau terlibat dalam proyek sumber terbuka di mana pedoman gaya ditetapkan.
Gaya paling umum yang saya lihat adalah gaya kedua dalam pertanyaan. Lihat di bawah untuk daftar mereka:
Panduan Gaya Google :
Konvensi Sun Coding :
Checkstyle Operator Wrap cek 's nilai default adalah nl:
sumber
Dalam kode saya cenderung memberi istirahat setelah operator:
Di sini, operator yang menggantung di ujung garis merupakan petunjuk besar bagi pembaca bahwa kode terus berlanjut. Dalam bahasa yang tidak memiliki terminator pernyataan, bahwa operator menggantung dapat berfungsi sebagai petunjuk yang cukup untuk kompiler / juru bahasa bahwa kode terus berlanjut (jika tidak saya harus menggunakan beberapa konstruksi garis kelanjutan yang jelek).
Ketika mendokumentasikan ungkapan itu (jika perlu dokumentasi), saya cenderung meletakkan istirahat di depan operator.
sumber
Selama Anda tetap konsisten, maka ketahuilah bahwa tidak ada keuntungan nyata. Ini sangat penting ketika mempertimbangkan penggabungan kode dan ruang putih.
sumber
Saya percaya garis harus dimulai dengan simbol tertinggi di pohon parse dari pernyataan yang ingin Anda hancurkan. Ini menyoroti operator yang paling penting dalam ekspresi. Ini adalah alasan yang sama mengapa Anda meletakkan yang lain di awal baris dan bukan di akhir baris sebelumnya.
Pada contoh berikut, memindai margin kiri, Anda melihat struktur pernyataan sebagai OR dari 3 ekspresi.
Di bawah, || operator kurang disorot. Itu kurang jelas itu adalah || ekspresi. Apalagi jika garis-garis itu panjangnya berbeda.
Dan hanya untuk referensi, ini sangat salah. The || operator tidak disorot sama sekali.
Saya bahkan suka meletakkan koma di awal baris, meskipun saya jarang melihatnya. Saya menahan diri dari melakukan hal itu pada kode bersama.
sumber
Untuk persamaan aritmatika yang panjang, saya biasanya melakukan satu dari dua hal.
tinggalkan semuanya dalam satu baris:
Saya biasanya melakukan ini untuk persamaan yang hanya berisi penambahan dan pengurangan, saya merasa sangat mudah untuk membuat kesalahan ketik dengan perkalian dan pembagian yang secara serius dapat mengacaukan ruang lingkup operator.
format kedua yang saya gunakan adalah operator progresif:
Saya tidak melihat alasan untuk mempersingkat menjadi satu baris, kecuali jika itu dapat dibuktikan untuk meningkatkan kinerja secara nyata. Selain itu, tidak ada ambiguitas tentang apa yang terjadi di mana, dan ada sedikit kesempatan untuk salah menempatkan tanda kurung untuk
/
dan*
operator.sumber
Menempatkan karakter gabungan (atau operator apa pun) di awal saluran akan meningkatkan keterbacaan. Kami memindai kode dengan berfokus pada awal setiap baris. Ketika sebuah garis dimulai dengan sebuah operator, pembaca dapat mengatakan bahwa garis tersebut merupakan kelanjutan dari pernyataan sebelumnya dengan memindai satu karakter itu.
Ekspresi matematika yang panjang selalu mengeset sehingga setiap baris baru dimulai dengan operator. Tidak ada alasan bahwa kode tidak boleh mengikuti konvensi ini.
sumber
Biarkan ekspresi pada satu baris, dan jika itu menjadi terlalu panjang, maka pisahkan menjadi ekspresi yang lebih kecil:
menjadi:
Jika ini tidak mungkin, maka saya merasa lebih mudah untuk istirahat sebelum operator, dan memiliki operator mulai langsung di bawah tugas sebelumnya (meletakkannya di bawah variabel membuat saya harus berpikir dan memulai kembali, yang menjengkelkan mengingat bahwa tujuannya adalah adalah untuk mempermudah membaca):
sumber