Saya sudah diajari sejak SMA yang mendefinisikan variabel seperti ini:
int _a;
atau
int __a;
harus dianggap praktik buruk karena ini pada akhirnya akan membuat kompiler teka-teki yang menggunakan variabel yang dimulai dengan garis bawah untuk memberi nama variabel sementara.
Sejauh yang saya tahu ini adalah alasan mengapa beberapa orang suka memindahkan garis bawah pada akhir nama, seperti:
int a_;
Namun, saya melihat banyak kode di sekitar yang menggunakan variabel underscore-starting. Dan kode itu dibangun dengan cukup baik dengan Visual Studio 2010 dan g ++ 4.x.
Jadi saya bertanya-tanya: apakah ini bukan masalah saat ini? Apakah kompiler modern lebih pintar tentang konvensi penamaan?
c++
programming-practices
naming-standards
Emiliano
sumber
sumber
Jawaban:
Anda tampaknya salah paham mengapa awalan menggarisbawahi adalah praktik yang buruk. Untuk membuatnya singkat, itu karena standar C dan C ++ cadangan awalan ini untuk detail implementasi, misalnya untuk implementasi perpustakaan standar. (perhatikan bahwa _ dan __ tidak dicadangkan untuk hal yang sama, lihat komentar)
Bahkan jika nama-nama berada di bawah cakupan (namespace, kelas, dll.), Mungkin ada beberapa nama global, khususnya makro, yang menggunakan awalan ini dan mungkin secara diam-diam memecahkan kode Anda jika Anda menggunakannya juga.
Jadi, pada dasarnya, sebagian besar waktu aman untuk menggunakan awalan ini TETAPI jika Anda tidak menggunakannya, Anda memiliki jaminan 100% bahwa penamaan Anda tidak akan pernah bertentangan dengan nama implementasi.
Karena itu, dalam keraguan, jangan gunakan awalan ini.
sumber
_limit
ini bukan kesalahan, tetapi sebagai fungsi global. Saya pikir lebih baik memiliki kebijakan sederhana yang mengatakan "jangan gunakan garis bawah utama, tanpa pengecualian" daripada kebijakan yang memungkinkan mereka dalam beberapa konteks dan bukan pada yang lain. Tetapi kita bisa sepakat untuk berbeda tentang itu. Dan untuk lebih jelasnya, saya tidak punya masalah dengan garis bawah di tempat lain selain dari awal.Menggunakan dua garis bawah jelas buruk - yang dicadangkan untuk detail implementasi khusus-kompiler. Ini tidak berlaku untuk menggunakan satu garis bawah.
Beberapa orang membenci untuk menggarisbawahi. Apakah Anda menyebutnya sesuatu
m_index
atauhighest_price
atau_a
- mereka merasa jijik itu. Saya bekerja dengan seseorang 25 tahun yang lalu yang memberi tahu saya tentang printer IBM tertentu (yang sangat populer) yang sesuai dengan lebih banyak baris pada halaman dengan menghilangkan pixel bawah pada setiap baris lainnya. Ini bagus untuk memo, atau untuk output sejumlah besar angka dan semacamnya, tetapi memiliki efek untuk kode membuat setengah dari garis bawah Anda tidak terlihat. (Ya, sungguh!) Orang-orang dari generasi itu umumnya memiliki kebencian garis bawah yang irasional, baik dari interaksi dengan printer itu atau dari bekerja dengan seseorang yang mengalahkan mereka yang garis bawah tidak boleh digunakan.Kebanyakan orang menemukan menggunakan campuran kasus (pilihan kami tidak memiliki di, mengatakan, Fortran) pendekatan yang lebih mudah dibaca:
mIndex
,HighestPrice
,a
berdiri cukup baik pada contoh-contoh sebelumnya menggarisbawahi. Saya akan memberi Anda dua aturan:_limit
untuk parameter fungsi,m_limit
untuk variabel anggota, jangan pernah gunakan garis bawah, kasing unta, huruf besar setiap kata, bahasa Hongaria, sesuatu ) dan patuhi itu. Jangan berbelit-belit, kadang-kadang dengan garis bawah di awal, kadang di akhir, kadang tidak menggunakannya, dan lima konvensi casing yang berbeda. Bersikaplah konsisten.Printer yang dimaksud sudah lama hilang. Jika Anda suka menggunakan satu garis bawah pada saat yang bersamaan, jangan ragu. Tapi mengerti, pembenci garis bawah masih ada.
sumber