Dalam debat mengenai variabel kembali, beberapa anggota tim lebih suka metode untuk mengembalikan hasilnya langsung ke pemanggil, sedangkan yang lain lebih suka menyatakan variabel kembali yang kemudian dikembalikan ke pemanggil (lihat contoh kode di bawah)
Argumen untuk yang terakhir adalah bahwa hal itu memungkinkan pengembang yang men-debug kode untuk menemukan nilai kembali metode sebelum kembali ke pemanggil sehingga membuat kode lebih mudah untuk dipahami: Ini terutama benar ketika panggilan metode dirantai daisy.
Adakah pedoman yang paling efisien dan / atau ada alasan lain mengapa kita harus mengadopsi satu gaya di atas yang lain?
Terima kasih
private bool Is2(int a)
{
return a == 2;
}
private bool Is3(int a)
{
var result = a == 3;
return result;
}
c#
coding-style
return-type
pb01
sumber
sumber
result
sebelum mengembalikannya.stloc.0
danldloc.0
di versi kedua). Tapi saya pikir itu hanya terjadi dalam mode Debug. Dan itu tidak terlalu penting di sini.a = b = c;
dana == b == c
, saya akan menghindari menulis sesuatu yang terlihata = b == c
jika Anda bisa. Ketika saya pertama kali melihat sederet kode seperti itu, saya perlu beberapa detik untuk mencari tahu apa yang sedang terjadi. Kode itu menonjol. Saya ingin menampar tanda kurung sekitara == 3
, tetapi StyleCop tidak menyukainya - alasan yang baik untuk menggunakan versi nomor satu. Sesuatu yang lain: ini pada dasarnya adalah lambda, sepertia => (a == 3)
. Mengapa menambahkan sebaris kode ke fungsi sepele yang sudah membengkak?Jawaban:
Karena saya menggunakan Resharper dengan Visual Studio, Ctrl-RV (Atau Ctrl-Alt-V, jika Anda menggunakan binding kunci Resharper / IntelliJ) mengubah contoh pertama Anda menjadi contoh kedua. Jadi ketika saya ingin men-debug, saya bisa melakukannya dengan cukup mudah. Dan jika saya lupa mengembalikannya maka saya tidak akan merasa buruk karena Ctrl-RI akan mengembalikannya lagi untuk membuatnya lebih mudah dibaca.
Serius, buang waktu Anda berdebat tentang hal-hal yang lebih penting. Seperti tempat menaruh kurung kurawal atau spasi vs tab.
sumber
Secara pribadi saya menemukan contoh pertama lebih mudah dibaca. Anda masih dapat men-debug-nya, dengan menetapkan titik istirahat pada pernyataan pengembalian dan menambahkan
a == 2
ke jendela arloji atau dengan menggunakan arloji cepat.Tapi ini benar-benar masalah preferensi pribadi. Kedua versi itu OK.
sumber
Ketika kode mudah dibaca sebagai contoh Anda, tidak ada yang salah dengan mengembalikan hasil operasi logis seperti
return a == 2
. Namun, jika nilai kembali adalah pernyataan yang lebih kompleks atau terlihat sepertimaka Anda akan ingin menggunakan variabel untuk menyimpan potongan-potongan itu terlebih dahulu dan menyederhanakan pernyataan kembali, agar mudah dibaca.
sumber
Dalam contoh sederhana seperti itu, salah satunya OK.
Untuk contoh yang lebih rumit, saya lebih suka cara kedua. Itu hanya karena itu lebih mudah dibaca dan orang lain mungkin harus menjaga kode.
sumber
result
, yang itu sendiri merupakan pengidentifikasi yang sepenuhnya non-deskriptif dan tidak berguna.