Dapatkah seseorang menjelaskan kepada saya konvensi pengkodean C #?

14

Saya baru-baru ini mulai bekerja dengan Unity3D dan terutama scripting dengan C #. Seperti biasanya saya program di Jawa, perbedaannya tidak terlalu besar tetapi saya masih merujuk ke kursus kilat hanya untuk memastikan saya berada di jalur yang benar.

Namun, keingintahuan terbesar saya dengan C # adalah bahwa huruf kapital menggunakan huruf pertama dari nama metode (mis. Java: getPrime()C #: GetPrime()aka: Pascal Case?). Apakah ada alasan bagus untuk ini? Saya mengerti dari halaman kursus kilat yang saya baca yang ternyata itu adalah konvensi untuk .Net dan saya tidak punya cara untuk mengubahnya, tetapi saya ingin mendengar mengapa hal itu dilakukan seperti ini sebagai lawan dari kasus unta (relatif?) Normal itu, katakanlah, penggunaan Java.

Catatan: Saya mengerti bahwa bahasa memiliki konvensi pengkodean sendiri (metode Python semua huruf kecil yang juga berlaku dalam pertanyaan ini) tapi saya tidak pernah benar-benar mengerti mengapa itu tidak diformalkan menjadi standar.

ahodder
sumber
18
Aku benar-benar tidak berpikir Anda dapat melihat camelCasedan PascalCasedan underscore_casedan mengatakan bahwa salah satunya adalah normal (bahkan relatif normal) dan yang lainnya tidak. Seperti yang dikatakan @dasblinkenlight, ini adalah pilihan sewenang-wenang. Satu-satunya hal yang membuat Anda berpikir bahwa konvensi C # tidak biasa adalah bahwa Anda "biasanya memprogram di Jawa", dan karenanya terbiasa dengan pilihan sewenang-wenang yang dibuat untuk Java.
Carson63000
Gunakan JavaScript bukan .. untuk Unity3D :)
Lipis
@Lipis Kenapa - selain selera pribadi? ;-)
ahodder
@AedonEtLIRA benar-benar pribadi .. tidak apa-apa :) Nikmati Unity tidak peduli apa bahasa .. Anda akan berakhir menggunakan ..
Lipis
@Lipis Sejauh ini bagus. Banyak lonceng dan peluit, dan saya belum menjatuhkan uang untuk itu. Tapi saya lebih suka gaya terstruktur dari C # (c / c ++) dan java.
ahodder

Jawaban:

27

Konvensi penamaan mewakili pilihan sewenang-wenang dari penerbit mereka. Tidak ada dalam bahasa itu sendiri yang melarang Anda memberi nama metode Anda seperti yang Anda lakukan di Jawa: selama karakter pertama adalah huruf / garis bawah, dan semua karakter lain adalah huruf, angka, atau garis bawah, C # tidak akan mengeluh. Namun, pustaka kelas yang datang dengan .NET mengikuti konvensi bahwa Microsoft telah mengadopsi secara internal. Microsoft juga menerbitkan pedoman ini , sehingga orang lain dapat memilih untuk mengadopsi mereka untuk perpustakaan kelas mereka sendiri juga. Meskipun itu adalah pilihan Anda untuk mengikuti atau mengabaikan pedoman Microsoft, pengenalan kode Anda oleh orang lain mungkin lebih cepat jika Anda mengikuti pedoman penamaan yang sama.

dasblinkenlight
sumber
Namun biasanya ada beberapa alasan di balik kebaktian, dan ketika saya membaca "Apakah ada alasan bagus untuk ini?" Saya memahaminya sebagai pertanyaan tentang MENGAPA bukan APA.
greenoldman
Pascal untuk anggota publik / internal / statis dan semua metode. Unta untuk pribadi. Ini membantu membedakan ruang lingkup token saat Anda memindai itu. Kata thiskunci melakukan hal yang sama. Pilihan gaya praktis, bahkan jika mereka mungkin tampak asing
Gusdor
23

Mungkin karena pengaruh Pascal / Delphi. Bagaimanapun juga, pencipta C # dan Delphi adalah orang yang sama (Anders Hejlsberg).

Konvensi pengkodean delphi pada umumnya sama dengan C # dalam aspek ini; lihat http://www.econos.de/delphi/cs.html#ObjectPascal_Procedures atau http://wiki.delphi-jedi.org/index.php?title=Style_Guide#Method_Naming - kebetulan?

Konrad Morawski
sumber
4
A +1 untuk ini karena memberikan apa yang mungkin menjadi alasan sebenarnya mengapa pilihan sewenang-wenang khusus ini dibuat untuk C #.
Maximus Minimus
4

Selain jawaban lain yang dibuat, memiliki case unta untuk metode berarti bahwa mereka dapat bertentangan dengan nama untuk anggota pribadi, parameter dan variabel metode yang menggunakan case unta untuk penamaan mereka. Di Jawa (dan C # 1.0) ini tidak terlalu umum karena penggunaan delegasi canggung dan jarang. Dalam modern yang C # itu tidak persis umum , tetapi juga tidak pernah terdengar-dari.

Telastyn
sumber
1
Garis bawah tidak boleh digunakan dalam bidang pribadi C # (lihat blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx , mis.), Tetapi ini kontroversial dan sering ditemukan.
Jens
1
mengandalkan casing untuk membedakan antara konstruksi bahasa adalah ide yang sangat buruk, terlepas dari apakah bahasa memungkinkan Anda untuk melakukannya atau tidak.
gbjbaanb
4
@ Telastyn pernyataan itu cukup mengejutkan. Sebagian besar pustaka kelas .NET menggunakan konvensi itu.
MattDavey
1
@Dunk, bagaimana tiba - tiba konvensi saya ? Saya hanya memberikan komentar, saya juga tidak memiliki pendapat tentang masalah ini :)
MattDavey
2
@MarjanVenema: tidak yakin apa yang Anda bicarakan tetapi C # cukup peka terhadap huruf besar-kecil dan Anda tentu saja dapat memiliki tabrakan antara anggota yang serupa. Ini menjadi menyenangkan dan mengasyikkan ketika Anda memiliki kasus nyata bahasa INsensitif seperti VB.NET Anda bekerja dengan pada tingkat perpustakaan.
Wyatt Barnett