Konvensi kapitalisasi untuk bidang yang dilindungi C #

17

Apakah konvensi kapitalisasi untuk nama bidang yang dilindungi dalam C #?

Apakah itu _myVar (seperti bidang pribadi) atau MyVar (seperti properti)?

Louis Rhys
sumber
3
Apakah Anda yakin ingin memiliki bidang yang dilindungi sama sekali? Sebagian besar alasan untuk tidak memiliki bidang publik juga berlaku untuk bidang yang dilindungi, jadi saya pikir lebih baik menggunakan properti yang dilindungi saja.
svick
dalam kasus uji, biasanya nyaman untuk memiliki bidang yang dilindungi .. tapi mungkin Anda benar itu dapat diubah menjadi properti. Tetapi jika saya menginginkan bidang yang dilindungi, apa konvensi penamaannya?
Louis Rhys
2
Apakah Anda yakin _myVar adalah konvensi yang tepat untuk bidang pribadi? (Anda membuat premis bahwa itu). Tidak mencoba untuk memulai perang agama di sini, hanya mencoba untuk mengatakan bahwa jika Anda memilih semacam aturan sewenang-wenang untuk bidang pribadi, Anda dapat memilih aturan lain untuk bidang yang dilindungi Anda. Satu-satunya saran adalah konsisten.
Marek

Jawaban:

13

Ada sesuatu yang disebut Pedoman Desain untuk Mengembangkan Perpustakaan Kelas yang ditulis oleh Microsoft.

Dikatakan sebagai berikut:

Jangan berikan bidang contoh yang bersifat publik atau dilindungi.

Bidang publik dan yang dilindungi tidak versi dengan baik dan tidak dilindungi oleh tuntutan keamanan akses kode. Alih-alih menggunakan bidang yang dapat dilihat secara publik, gunakan bidang pribadi dan paparkan melalui properti.

Sebaik:

  • Jangan gunakan casing Pascal dalam nama bidang

  • Jangan gunakan awalan untuk nama bidang. Misalnya, jangan gunakan g_ atau s_ untuk membedakan bidang statis versus non-statis.

Adapun _awalan, itu digunakan sesering this.konvensi (sejauh ini saya telah melihat kode sumber browsing di CodePlex / GitHub). ReSharper, misalnya, mempromosikan _cek penamaannya.

jgauffin
sumber
Anda sedikit selektif karena tidak memasukkan "Jangan gunakan awalan untuk nama bidang." dari MSDN di samping aturan casing Pascal :) Meskipun memang benar bahwa resharper secara default mempromosikan awalan _, jika Anda mengutip konvensi MSDN IMHO, Anda tidak boleh mencampurnya dengan tayangan Anda sendiri.
Marek
2
apa artinya "jangan versi dengan baik"? Apakah Anda mengatakan bahwa karena bidang yang dilindungi tidak disarankan, tidak ada pedoman tentang namanya? Bagaimanapun, Resharper tampaknya merekomendasikanMyVar
Louis Rhys
2
@ Marsek: Saya memang memasukkan preferensi saya sendiri. Saya hanya menyatakan apa yang disukai Resharper. Dan bukan niat saya untuk selektif. Jawaban diperbarui
jgauffin
1
@ jgauffin Selain dari konsumen yang menggunakan refleksi terhadap kode Anda, tidakkah mengubah bidang menjadi properti transparan menjadi penelepon? Bagaimana cara mengubah bidang yang dilindungi ke properti yang dilindungi dengan nama yang sama memecah kompatibilitas?
Quantic
1
istirahat kompatibilitas biner: msdn.microsoft.com/en-us/library/ta31s3bc(v=vs.71).aspx
jgauffin