Fakta:
i ++ dan ++ i sama-sama mudah dibaca. Anda tidak suka satu karena Anda tidak terbiasa, tetapi pada dasarnya tidak ada yang bisa Anda salah artikan, jadi tidak ada lagi pekerjaan untuk membaca atau menulis.
Setidaknya dalam beberapa kasus, operator postfix akan kurang efisien.
Namun, dalam kasus 99,99%, itu tidak masalah karena (a) itu akan bertindak pada tipe sederhana atau primitif dan itu hanya masalah jika menyalin objek besar (b) itu tidak akan berada dalam kinerja bagian penting dari kode (c) Anda tidak tahu apakah kompiler akan mengoptimalkannya atau tidak, itu bisa dilakukan.
Jadi, saya sarankan menggunakan awalan kecuali Anda secara khusus membutuhkan postfix adalah kebiasaan yang baik untuk masuk, hanya karena (a) itu kebiasaan yang baik untuk menjadi tepat dengan hal-hal lain dan (b) sekali dalam bulan biru Anda akan berniat menggunakan postfix dan mendapatkannya dengan cara yang salah: jika Anda selalu menulis apa yang Anda maksudkan, itu kemungkinan kecil. Selalu ada trade-off antara kinerja dan optimisasi.
Anda harus menggunakan akal sehat Anda dan tidak mengoptimalkan mikro sampai Anda perlu, tetapi tidak akan menjadi tidak efisien untuk itu. Biasanya ini berarti: pertama, singkirkan segala konstruksi kode yang tidak efisien yang tidak dapat diterima bahkan dalam kode non-waktu-kritis (biasanya sesuatu yang mewakili kesalahan konseptual yang mendasar, seperti melewatkan 500MB objek dengan nilai tanpa alasan); dan kedua, dari setiap cara penulisan kode lainnya, pilih yang paling jelas.
Namun, di sini, saya percaya jawabannya sederhana: Saya percaya menulis awalan kecuali jika Anda secara khusus membutuhkan postfix adalah (a) sangat sedikit lebih jelas dan (b) sangat sedikit lebih mungkin lebih efisien, jadi Anda harus selalu menuliskannya secara default, tetapi jangan khawatir tentang hal itu jika Anda lupa.
Enam bulan yang lalu, saya berpikir sama dengan Anda, bahwa i ++ lebih alami, tapi ini murni yang biasa Anda lakukan.
EDIT 1: Scott Meyers, dalam "C ++ Lebih Efektif" yang secara umum saya percayai tentang hal ini, mengatakan Anda harus secara umum menghindari penggunaan operator postfix pada tipe yang ditentukan pengguna (karena satu-satunya implementasi yang waras dari fungsi kenaikan postfix adalah membuat salinan objek, panggil fungsi awalan increment untuk melakukan kenaikan, dan kembalikan salinannya, tetapi operasi penyalinan bisa mahal).
Jadi, kita tidak tahu apakah ada aturan umum tentang (a) apakah itu benar hari ini, (b) apakah itu juga berlaku (kurang begitu) untuk tipe intrinsik (c) apakah Anda harus menggunakan "++" pada apa pun lebih dari kelas iterator yang ringan. Tetapi untuk semua alasan yang saya jelaskan di atas, tidak masalah, lakukan apa yang saya katakan sebelumnya.
EDIT 2: Ini merujuk pada praktik umum. Jika Anda berpikir itu TIDAK penting dalam beberapa contoh tertentu, maka Anda harus membuat profil dan melihatnya. Pembuatan profil mudah dan murah dan berfungsi. Mendedikasikan dari prinsip pertama apa yang perlu dioptimalkan adalah sulit dan mahal dan tidak bekerja.
i++
sebelum saya tahu itu bisa mempengaruhi kinerja++i
, jadi saya beralih. Pada awalnya yang terakhir memang terlihat sedikit aneh, tetapi setelah beberapa saat saya terbiasa dan sekarang terasa sealamii++
.