if
Kondisi yang berliku panjang harus dihindari jika memungkinkan, namun terkadang kita semua akhirnya menulisnya. Bahkan jika itu adalah kondisi yang sangat sederhana, pernyataan yang terlibat terkadang sangat bertele-tele, sehingga seluruh kondisi menjadi sangat panjang. Apa cara yang paling mudah dibaca untuk memformatnya?
if (FoobarBaz::quxQuux(corge, grault) || !garply(waldo) || fred(plugh) !== xyzzy) {
thud();
}
atau
if (
FoobarBaz::quxQuux(corge, grault)
|| !garply(waldo)
|| fred(plugh) !== xyzzy
) {
thud();
}
atau
if (FoobarBaz::quxQuux(corge, grault)
|| !garply(waldo)
|| fred(plugh) !== xyzzy) {
thud();
}
atau
thudable = FoobarBaz::quxQuux(corge, grault);
thudable ||= !garply(waldo);
thudable ||= fred(plugh) !== xyzzy;
if (thudable) {
thud();
}
atau preferensi lain?
coding-style
conditions
menipu
sumber
sumber
Saya suka menjaga operator di akhir untuk menunjukkan kelanjutan:
sumber
Saya penggemar nama variabel yang berarti:
Atau refactor sebagai fungsi, seperti yang disebutkan di atas.
sumber
Saya memecahkan subekspresi yang berantakan, atau semuanya, sebagai variabel bool. Kemudian logika boolean tingkat atas dari pernyataan 'jika' dapat dibuat jelas. Dalam jenis pekerjaan yang saya lakukan, tidak selalu ada beberapa hal ORed atau ANDed.
Ini sangat bagus di debugger, di mana saya bisa melihat semua bools sebelum menjalankan 'jika'.
sumber
Saya cenderung untuk menyelaraskan operator pada awal baris baru jadi saya ingat bagaimana saya menggabungkan istilah (baik untuk logika panjang dan aritmatika panjang). Seperti ini:
Ini hanya berfungsi jika saya membuat indentasi dengan 2 spasi atau mengatur setel lingkungan saya ke indentasi multiline lebih banyak, atau kalau tidak akan sulit untuk mengetahui di mana predikat berakhir dan kode yang berguna dimulai.
sumber
Saya penggemar berikut ini:
Dengan cara ini, ia masih terlihat seperti ekspresi if dan bukan ekspresi yang dipecah-pecah. Lekukan membantu dalam menunjukkan bahwa itu merupakan kelanjutan dari baris sebelumnya.
Anda juga bisa memasukkannya sampai braket pembuka berada di akhir baris sebelumnya sehingga berada di akhir ekspresi if seperti yang seharusnya.
sumber