Apa praktik terbaik, konvensi penamaan yang paling umum diterima untuk variabel pribadi dalam C #?
private int myInteger;
private int MyInteger;
private int mMyInteger;
private int _myInteger;
private int _MyInteger;
- Opsi misterius lainnya
Yang mana yang Anda gunakan dan mengapa? (Perusahaan saya cukup baru di C # dan saya ingin memilih metode "yang paling diterima industri" untuk mencoba dan masuk ke standar pengkodean kami.)
coding-standards
variables
naming
Gunung berapi
sumber
sumber
Jawaban:
Pedoman desain kelas MSDN http://msdn.microsoft.com/en-us/library/ta31s3bc.aspx merekomendasikan opsi 1 - myInteger.
Saya selalu menggunakan gaya ini. Saya memiliki ketidaksukaan pribadi terhadap karakter _.
sumber
myInteger
dan akan cocok_myInteger
. Tetapi saya tidak tahu bahwa MSDS mengatakan untuk tidak menggunakan _myInteger
variabel lokal ke metode, atau anggota kelas pribadi?this.myInteger
;)this
setiap waktu, hanya dalam metode di mana variabel lokal dengan nama yang sama hadir. Namun, Anda diharuskan untuk menulis simbol tambahan setiap kali jika Anda menggunakan garis bawah. Dengan apa yang saya setujui adalah bahwa berpegang teguh pada perjanjian gaya kode lokal Anda selalu penting.Saya menggunakan opsi # 4 di atas:
Saya suka memiliki beberapa indikasi cakupan dalam nama variabel saya, dan garis bawah cukup untuk tujuan itu. Ini juga cukup mudah dibaca.
sumber
Saya menggunakan skema penamaan berikut:
sumber
Saya pikir opsi 4 adalah opsi yang paling mudah dibaca. Ini membantu Anda dari keharusan melakukan ini:
Itu juga membuat semua anggota pribadi lebih terlihat. Pada contoh berikut, dari mana
age
datangnya? Tanpathis
kualifikasi, sulit untuk mengatakannya.Ini cara yang lebih mudah untuk dipahami:
sumber
Pertama, PascalCasing biasanya disediakan untuk properti publik, const, metode, dll dari kelas. Jadi saya akan melewati 2 dan 5.
Kedua, notasi Hungaria tidak disarankan di dunia .NET, jadi (eh, saya pikir) 3 benar. Dengan asumsi itulah yang terjadi dengan 3.
Yang tersisa dengan camelCasing dan _camelCasing. Saya biasanya menggunakan _camelCasing untuk variabel kelas, dan camelCasing tua biasa untuk variabel yang dicakup dalam suatu metode atau lebih sempit. Casing unta adalah standar yang diterima yang digunakan untuk argumen metode, nama variabel yang dilindungi / pribadi dan variabel dalam metode atau cakupan yang lebih sempit.
Saya juga suka menambahkan dengan garis bawah sehingga variabel pribadi saya dikelompokkan dalam intellisense saya. Namun, saya hanya melakukan ini untuk variabel yang mencakup satu jenis. Variabel yang dideklarasikan dalam metode atau lingkup yang lebih sempit saya biarkan garis bawah mati. Mempermudah pemisahan dan menjaga variabel yang jarang digunakan bersama.
sumber
I don't understand why you would use _camelCasing for class variables
you after:I'm talking about the difference between Color.ClassMethod() and myColor.InstanceMethod()
Maafkan saya saat saya bingung. Dengar, saya jarang menggunakan variabel kelas, jadi senang diingatkan akan nama mereka dengan menekan _ dan meminta mereka semua muncul dalam intellisense yang bagus dan dikelompokkan.private int integer
Jika Anda bingung antara variabel anggota dan lokal dalam ruang lingkup metode maka Anda mungkin perlu refactor.
sumber
integer
bisa ditulis ulang dengan lebih baik, mungkinvalue
?Saya percaya cara terbaik untuk melakukannya (dalam C # /. Net) adalah kombinasi dari 2 dan 6:
Secara teori tidak ada variabel sama sekali di sini, tetapi terlihat dan bertindak seperti variabel instance pribadi. Jika kita perlu menambahkan beberapa logika bisnis ke nilai itu (ini adalah nilai yang sepenuhnya internal, jadi kita bisa melakukan apa pun yang kita inginkan darinya) maka itu sudah 'milik' untuk kita. Secangkir menang panas yang mengepul!
sumber
Saya melakukan opsi # 4 karena seperti itulah tampilan SSCLI, tapi jujur saya tidak terlalu peduli pada penamaan variabel pribadi. Publik adalah cerita yang berbeda.
BTW Anda lupa m_MyInteger
sumber
Aku tidak akan menyebutnya apa pun "milikku"!
Tapi saya akan katakan
cukup sering ini lebih baik daripada memiliki variabel eksplisit. Jika saya memiliki variabel pribadi yang eksplisit saya akan menyebutnya
int _variableName;
sumber
Dalam C ++ saya cenderung menggunakan _ karena saya sering mengganti editor yang tidak memungkinkan saya untuk melihat apakah itu pribadi.
Untuk C # saya cenderung meninggalkan _ pergi karena Visual Studio memungkinkan saya untuk melihat apakah itu pribadi.
Saya cenderung menggunakan cara Unta untuk melakukan ini.
sumber
Saya menggunakan 4 (
private int _myInteger;
) karena:private int myInteger;
Ini adalah bagaimana saya memberi nama variabel lokal saya.
private int MyInteger;
Ini adalah bagaimana saya menyebutkan konstanta.
private int mMyInteger;
Ini bukan gaya C #.
private int _MyInteger;
Ini terlihat aneh.
sumber
dengan garis bawah.
Bill Wagner menjelaskan alasannya dalam Efektif C # . Tapi aku tidak pernah akan nama integer saya Integer , lebih baik seperti _age atau _length. Memasukkan TypeName dalam nama instance adalah praktik yang mengerikan. Nama harus jelas dan karena C # adalah Tipe-Jenis Aman dapat ditemukan sepanjang waktu.
sumber
Anda perlu memberikan contoh yang lebih spesifik, tetapi:
private int count
,private int badFileCount
,private static readonly int ReconnectAttemptsLimit
Omong-omong, Anda mendapatkan semua ini GRATIS ketika Anda menginstal dan mulai menggunakan yang terbaru dan terbaik
MSFT Stylecop
.sumber
Saya memilih opsi 5:
private int _MyFoo
Saya tidak melihat keunggulan kompetitif nyata di atas _myFoo.
sumber
Gunakan camelCasing untuk variabel pribadi seperti
myInteger
Pertimbangkan sebelumnya
_
jika variabel adalah cadangan untuk properti untuk mengurangi kebingungan-Variabel
_myProperty
untuk propertiMyProperty
sumber
Saya memiliki nama ReSharper variabel saya, tidak hanya milik saya tetapi semua orang melakukan ini juga. Ada sejumlah besar konsistensi melalui proyek.
sumber
IDesign C # Coding Standar Juval Lowy cukup populer. Standar ini merekomendasikan awalan variabel anggota pribadi dengan "m_" (Opsi 6). Itu yang kami lakukan di tim kami.
Opsi 4 (
_myInteger
) adalah variasi yang dapat diterima dari standar ini.Saya tidak suka rekomendasi MSDN (
myInteger
), karena membuatnya sulit untuk memberi tahu anggota pribadi dari variabel lokal. Rekomendasi mereka, tentu saja, menyelesaikan masalah ini dengan anggota swasta yang memenuhi syaratthis
, yang tampaknya berlebihan bagi saya.sumber