Pertimbangkan 2 jenis implementasi ini:
public int add(int x, int y) {
return mysteriousAdd(x, y);
}
public int add(int x, int y) {
int output = mysteriousAdd(x, y);
return output;
}
Seorang kolega saya mengatakan bahwa implementasi kedua lebih baik karena selama debugging kita bisa melihat variabel yang mysteriousAdd
kembali dan itu tidak banyak overhead untuk membuat variabel tambahan di stack. Saya pikir implementasi pertama lebih baik dan maksudnya tidak begitu valid karena saat ini sebagian besar kompiler dapat menunjukkan apa respon fungsi selama debugging tanpa variabel tambahan dan kami juga menghindari pembuatan variabel tambahan di stack.
Apakah pembuatan variabel referensi dalam stack merupakan operasi yang murah? Manakah dari 2 metode di atas yang Anda sarankan lebih baik untuk pengkodean dan mengapa?
Jawaban:
Jika Anda membandingkan output assembly / bytecode / IL / etc dari dua fungsi seperti itu, Anda harus menemukan keduanya sama. Semua kecuali compiler bush-liga paling akan mengoptimalkan nilai tambahan.
Jadi pertimbangan kinerja / memori harus dibuang.
Jadi, tentukan pilihan Anda tentang keterbacaan. Dalam contoh, benar-benar tidak ada nilai untuk mengidentifikasi nilai kembali sebelum kembali. Namun, jika Anda berada di bagian bawah perhitungan 20 baris atau sesuatu, sering kali layak untuk membuat nilai yang disebutkan sebelum kembali, karena nama itu dapat menunjukkan kepada pembaca informasi tentang hasil perhitungan yang seharusnya.
sumber
result
(mungkin disingkat). Nama itu benar-benar mengatakan itu semua.Tunjukkan di lingkungan pemrograman Anda bahwa Anda dapat membaca hasil pemanggilan fungsi tanpa variabel semudah tanpa variabel sementara. Saya menggunakan apa yang saya pikir merupakan lingkungan pengkodean yang cukup baik, dan saya tidak bisa.
Jadi tunjukkan. Jika Anda bisa, kolega Anda telah mempelajari sesuatu. Jika tidak bisa, Anda belajar sesuatu.
sumber