Pertanyaan ini diinspirasi oleh pertanyaan tentang final
java .
Dalam C / C ++, haruskah saya menggunakan const
jika memungkinkan?
Saya tahu sudah ada pertanyaan terkait tentang penggunaan const
parameter . Sayangnya pertanyaan itu dan jawabannya tidak sepenuhnya menjawab pertanyaan saya, karena ini hanya tentang parameter fungsi, tetapi saya juga ingin tahu tentang kasus-kasus lain (misalnya: variabel lokal).
Juga, hampir semua jawaban untuk pertanyaan itu mengatakan kita harus menggunakan const
karena berisi informasi yang berguna tentang aksesibilitas variabel. Tapi ini tampaknya bertentangan dengan jawaban tentang penggunaan final di Jawa yang menyatakan final
mungkin berlebihan jika tidak mengandung informasi tambahan dan karenanya harus dihilangkan agar kode tetap pendek dan bersih.
Jadi, haruskah saya menggunakan const
jika memungkinkan? Jika demikian, mengapa saran untuk const
di C ++ berbeda dengan saran untuk final
di Jawa?
sumber
final
danconst
tidak memiliki jaminan yang sama.Secara pribadi,
const
saya butuh sedikit waktu untuk menulis, dan sangat sedikit waktu untuk membaca, biasanya jauh lebih sedikit daripada yang diperlukan untuk memeriksa apakah ada kode yang mengubah variabel, dan itu benar-benar mencegah saya dari menulis bug (ada yang pernah menambah iterator akhirnya secara kebetulan? Dll)Saya juga menemukan bahwa menjadi ketat tentang penggunaan const membimbing saya menuju kode yang lebih baik dengan cara lain, seperti membuat fungsi pembantu untuk melakukan inisialisasi non-sepele.
sumber
Saya tidak akan setuju dengan poster lain dan merekomendasikan Anda untuk tidak menggunakan tingkat
const
atas pada variabel dan parameter lokal. (Referensi dan pointer ke const, yaituconst T&
berbeda, dan Anda harus menggunakannya untuk kebenaran setiap saat jika sesuai.)Keuntungan dari tingkat atas
const
adalah:Kerugiannya adalah:
Tidak dapat digunakan pada variabel "pseudo-const", yaitu variabel yang diinisialisasi dalam beberapa cara lebih rumit daripada konstruksi langsung, tetapi tidak dimodifikasi setelah, misalnya menggunakan
getline
:Mencegah pengaktifan keluar pada panggilan fungsi dan kembali:
Saya telah bekerja pada basis kode di mana lokal
const
banyak digunakan, dan saya merasa itu tidak membantu sama sekali, namun itu mengisi kode dengan pesimisasi halus seperti di atas. Saya pribadi lebih suka mengadopsi kebijakan umum memodifikasi variabel sesering mungkin, dan membuat fungsi cukup kecil sehingga penggunaan variabel jelas, dan bahkan jika dimodifikasi, kompleksitas fungsi cukup rendah untuk membuatnya menjadi non -isu.sumber
const
pada penduduk lokal: karena itu mencegah modifikasi teknis, bukan hanya modifikasi konseptual.Kata
const
kunci harus digunakan untuk variabel lokal, seperti halnya parameter. Ini berguna karena:const
hanya perlu satu detik untuk menulis, jadi itu bukan masalah besar.Perhatikan bahwa tidak ada jawaban benar / salah di sini. Di tautan Anda, penjawab yang paling banyak berselisih pendapat
final
tidak boleh digunakan secara lokal. Namun, penjawab berikutnya sangat merekomendasikannya.Jika fungsi Anda sederhana dan sepele , Anda tidak boleh menambahkan
const
karena semua orang mengerti maksud Anda. Namun, jika logika dalam fungsi Anda non-sepele, Anda harus menggunakan kata kunci. Ingat, ada sedikit yang hilang.sumber