it-swarm-id.com

Bagaimana Anda memberi nama variabel pribadi Anda di C #?

Apa praktik terbaik, konvensi penamaan yang paling umum diterima untuk variabel pribadi dalam C #?

  1. private int myInteger;
  2. private int MyInteger;
  3. private int mMyInteger;
  4. private int _myInteger;
  5. private int _MyInteger;
  6. 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.)

25
Vaccano

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 _.

44
btlog

Saya menggunakan opsi # 4 di atas:

private int _myInteger;

Saya suka memiliki beberapa indikasi cakupan dalam nama variabel saya, dan garis bawah cukup untuk tujuan itu. Ini juga cukup mudah dibaca.

25
Matt Dillard

Saya menggunakan skema penamaan berikut:

  • 1st (myInteger) untuk variabel cakupan lokal
  • 2nd (MyInteger) untuk properti publik
  • 4th (_myInteger) untuk variabel pribadi
16
Zafer

Saya pikir opsi 4 adalah opsi yang paling mudah dibaca. Ini membantu Anda dari keharusan melakukan ini:

public Person(string name, int age) 
{
    this.name = name;
    this.age = age;
}

Itu juga membuat semua anggota pribadi lebih terlihat. Dalam contoh berikut, dari mana age berasal? Tanpa kualifikasi this, sulit untuk mengatakannya.

private void Method()
{
    var x = 2;
    var y = age + x;
}

Ini cara yang lebih mudah untuk dipahami:

private void Method()
{
    var x = 2;
    var y = _age + x;
}
14
ChaosPandion

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 sudah 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 suatu 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-sama.

10
Ripped Off

private int integer

Jika Anda bingung antara variabel anggota dan lokal dalam ruang lingkup metode maka Anda mungkin perlu refactor.

4
Ryan Roberts

Saya melakukan pilihan # 4 karena seperti itulah tampilan SSCLI, tapi jujur ​​saya tidak terlalu peduli pada penamaan variabel pribadi. Publik adalah cerita yang berbeda.

BTW kamu lupa m_MyInteger

2
Conrad Frix

Aku tidak akan menyebutnya apa pun "milikku"!

Tapi saya akan katakan

class C
{
     int VariableName { get; set; }
}

cukup sering ini lebih baik daripada memiliki variabel eksplisit. Jika saya memiliki variabel pribadi yang eksplisit, saya akan menyebutnya int _variableName;

2
CJBrew

Saya percaya cara terbaik untuk melakukannya (dalam C # /. Net) adalah kombinasi dari 2 dan 6:

private int MyInteger { get; set; }

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 mengepul!

2
Task

dengan garis bawah.

Bill Wagner menjelaskan alasannya di Efektif C # . Tapi saya tidak akan pernah menyebut integer my Integer , sesuatu yang lebih baik seperti _age atau _length. Memasukkan TypeName dalam nama instance adalah praktik yang mengerikan. Nama harus cukup jelas dan karena C # adalah Tipe-Tipe Aman dapat ditemukan setiap saat.

1
Caspar Kleijne

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.

1
Tamara Wijsman

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 MSFT Stylecop.

1
Job

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.

1

Saya memiliki nama ReSharper variabel saya, tidak hanya milik saya tetapi semua orang melakukan ini juga. Ada sejumlah besar konsistensi melalui proyek.

0
Sevki

Saya memilih opsi 5: private int _MyFoo

Saya tidak melihat keunggulan kompetitif nyata di atas _myFoo.

0
mafu

Juesign Lowy IDesign C # Standar Pengkodean cukup populer. Standar ini merekomendasikan awalan variabel anggota pribadi dengan "m_" (Opsi 6). Itu yang kami lakukan di tim kami.

private int m_myInteger;

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 memenuhi kualifikasi anggota pribadi dengan this, yang tampaknya berlebihan bagi saya.

0
azheglov

Gunakan camelCasing untuk variabel pribadi seperti myInteger

Pertimbangkan _ Sebelumnya jika variabel adalah cadangan untuk properti untuk mengurangi kebingungan-
Variabel _myProperty Untuk properti MyProperty

0
Gulshan