Saya baru saja mulai menggunakan ReSharper (untuk C #) dan saya agak suka dengan kode baunya finder, itu menunjukkan kepada saya beberapa hal tentang tulisan saya yang ingin saya perbaiki sejak lama (terutama konvensi penamaan variabel).
Itu membuat saya mempertimbangkan kembali beberapa konvensi penamaan saya untuk metode dan variabel instan. ReSharper menyarankan bahwa variabel instance menjadi case unta yang lebih rendah dan mulai dengan garis bawah. Untuk sementara saya bermaksud membuat semua variabel lokal saya lebih rendah dari unta tetapi apakah garis bawah itu diperlukan? Apakah Anda merasa nyaman? Saya tidak suka konvensi ini tetapi saya juga belum mencobanya, apa pendapat Anda tentang itu?
Hal kedua yang mendorong saya untuk mengevaluasi kembali adalah konvensi penamaan saya untuk event handler GUI. Saya biasanya menggunakan standar VS dari ControlName_Action dan kontrol saya biasanya menggunakan notasi hungaria (sebagai akhiran, untuk membantu memperjelas dalam kode apa yang terlihat oleh pengguna dan apa yang tidak ketika berurusan dengan variabel dengan nama yang sama) jadi saya berakhir dengan OK_btn_Click ( ), apa pendapat Anda tentang itu? Haruskah saya menyerah pada konvensi ReSharper atau ada opsi lain yang sama validnya?
Dengan hormat
Satu hal yang saya suka banyak tentang menggunakan garis bawah, adalah secara dramatis mengurangi penggunaan "ini".
Mempertimbangkan:
tanpa garis bawah, Anda harus menulis:
yang berpotensi menyebabkan kesalahan halus:
Selain itu, penyelesaian kode lebih bersih karena hanya dengan mengikat garis bawah Anda mendapatkan daftar hanya bidang pribadi, sedangkan dengan "ini" Anda mendapatkan daftar semuanya.
Dengan hormat
Pedoman Kerangka Kerja Desain: Konvensi, Idoms, dan Pola untuk Reusable .NET libraries mengatakan:
Meninggalkan sedikit ruang untuk ambiguitas :)
sumber
this.size
jauh lebih jelas daripada_size
. Menggunakan nama yang digarisbawahi tidak mencegah kesalahan halus, Anda masih dapat menetapkan ukuran untuk dirinya sendiri, meskipun mudah-mudahan kompiler Anda akan memberi tahu Anda.this.size
dan_size
konsistensi. Denganthis.size
itu adalah opsional. Misalnya, jika ada bidang pribadi lain yang disebutname
, tidak perlu digunakanthis.name
dalam kode, saya bisa dengan mudah menggunakanname
tanpa bentrokan. Karenathis
terkadang bisa digunakan, dan tidak kali lain mengapa menggunakanthis
lebih rendah. Di sisi lain, tidak ada ambiguitas dengan_
...Konsistensi adalah kuncinya. Itu dan kejelasan, yaitu jangan samar atau mencoba menyimpan mengetik dengan menyingkat semuanya. Intellisense adalah pengetik pengetik Anda, bukan nama samar (tetapi singkat!).
sumber
order.Size()
(sebagai lawan dariorder.getSize()
) tetapi karena perpustakaan lain menggunakan getter dan setter kode saya tidak akan konsisten.Di C # mulai dilindungi atau nama publik dengan garis bawah bertentangan dengan Spesifikasi Bahasa Umum. Itu hanya benar jika anggota pribadi.
Dari MSDN:
Lihat: http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx
Di sini Anda dapat membaca peringatan tentang garis bawah:
Lihat: http://msdn.microsoft.com/en-us/library/81ed9a62.aspx
Anggota yang dilindungi adalah masalah karena Anda dapat mewarisi dari kelas yang ditulis dalam bahasa lain.
Tapi mungkin itu bukan masalah dalam kasus Anda jika Anda tidak memerlukan kode kompilasi CLS.
sumber
Saya suka garis bawah. Anda tahu sekilas bahwa variabel adalah anggota kelas dan pribadi.
Tentu IDE dapat memberitahu Anda bahwa ketika Anda mengarahkan mouse di atasnya, tetapi "pandangan pertama" tidak dapat dikalahkan. Anda tahu apa variabel lokal, dan apa variabel anggota dengan mata Anda sendiri. Tidak perlu menggulir atau menggulir mouse.
Anda dapat menggunakan kata kunci "ini" tetapi _ lebih pendek untuk pemindaian horizontal yang lebih baik. Nama deskriptif biasanya diinginkan tetapi ketika sesuatu merupakan konvensi yang mapan, lebih baik memiliki 1 karakter. misalnya menggunakan huruf i sebagai indeks saat perulangan melalui array. Karena ini adalah konvensi mapan bahwa saya adalah indeks, Anda mendapatkan manfaat pemindaian tanpa kelemahan bertanya-tanya apa arti "i".
sumber
Saya setuju secara umum dengan apa yang dikatakan oleh orang lain, tetapi ketika datang ke alat dan rantai alat, saya malas dan seperti kehidupan yang mudah. Saya menemukan hidup sering lebih mudah untuk melakukannya seperti yang mereka sarankan. Alasannya adalah
Jadi pendapat saya adalah jika Anda dapat menemukan alasan yang sah untuk mengkonfigurasi ulang alat yang baru saja Anda habiskan, dengan segala cara melakukannya. Jika Anda tidak dapat membenarkan untuk melakukan perubahan, jangan lakukan.
Perlu diingat bahwa setiap perubahan memiliki biaya berkelanjutan (nyata dan tersembunyi) untuk dipertahankan. Semakin sedikit, semakin rendah biaya. Misalnya - orang baru yang saya sebutkan - tidak ada perubahan berarti dia bisa membaca manual mereka. Konfigurasi ulang - Anda harus menulis adendum, menyimpannya dengan barang-barang lainnya, mengundurkannya, dan membuatnya membacanya setelah membaca manual mereka. Mungkin bukan masalah untuk toko 2 orang, tapi bagaimana dengan toko 100 orang?
sumber
Dua aturan yang Anda tanyakan, garis bawah pada awal nama bidang pribadi, dan nama metode umumnya dianggap sebagai norma di lingkaran pengembangan C #. Dengan beradaptasi dengan konvensi-konvensi tersebut kode Anda akan segera lebih mudah dipahami oleh pengembang lain karena itu adalah kerangka berpikir yang biasa mereka gunakan untuk beroperasi.
Akhiran Label, RadioButton, dll. Untuk kontrol Anda umumnya dianggap sebagai norma juga. Beberapa kontrol yang sering akan ada untuk konsep tunggal (misalnya Label dan TextBox), dan akhiran ini cukup berguna. Notasi Hungaria sejati telah ditinggalkan sejak lama karena telah dibastardisasi menjadi sesuatu yang tidak mengekspresikan maksud aslinya, yang merupakan konteks tentang variabel bukan jenis, ukuran, dll.
sumber
Dalam kasus saya, menggunakan camelcase dan garis bawah membantu dengan nama variabel deskriptif (baca: panjang) dan penyelesaian kode. Saya tidak begitu yakin bagaimana pelengkapan otomatis Visual Studio bekerja tetapi di QtCreator dan pada tingkat yang lebih rendah, Eclipse, seseorang dapat mengetik, misalnya
dan telah diperluas ke
Menghemat sedikit pengetikan jika Anda memiliki nama seperti
yang cenderung saya hasilkan ketika dalam "mode penamaan deskriptif".
Dengan menggunakan garis bawah, saya dapat menentukan nama yang ingin saya selesaikan secara otomatis
atau
Semoga penjelasan saya cukup jelas :)
sumber