Apa filosofi / alasan di balik nama metode casing Casing C #?

22

Saya baru mulai belajar C #. Berasal dari latar belakang di Jawa, C ++ dan Objective-C, saya menemukan C # 's Pascal-casing metodenya nama-nama yang agak unik, dan agak sulit untuk terbiasa pada awalnya. Apa alasan dan filosofi di balik ini?

Saya menduga itu karena properti C #. Tidak seperti di Objective-C, di mana nama metode dapat persis sama dengan variabel instan, ini tidak terjadi dengan C #. Saya kira salah satu tujuan dengan properti (seperti halnya dengan sebagian besar bahasa yang mendukungnya) adalah membuat properti benar-benar tidak dapat dibedakan dari variabel dan metode. Jadi, seseorang dapat memiliki "int x" di C #, dan properti yang sesuai menjadi X. Untuk memastikan bahwa properti dan metode tidak bisa dibedakan, semua nama metode yang saya duga juga karena itu diharapkan dimulai dengan huruf besar. (Ini hanya hipotesis saya berdasarkan apa yang saya ketahui tentang C # sejauh ini - saya masih belajar). Saya sangat ingin tahu bagaimana pedoman penasaran ini muncul (mengingat bahwa itu '

(EDIT: By Pascal-casing, maksud saya PascalCase (yang pada dasarnya adalah camelCase tetapi dimulai dengan huruf kapital). Nama-nama metode biasanya dimulai dengan huruf kecil dalam kebanyakan bahasa)

Nocturne
sumber
Jika Anda melihat bahwa semua anggota keluarga tertentu memiliki semua dinding di semua rumah mereka dicat dengan lambang yang aneh, apakah Anda akan penasaran mengapa mereka melakukan hal yang aneh?
Nocturne
1
Menurut Anda mengapa ini disebut kasus Pascal ?
R. Martinho Fernandes
1
@ Martinho Fernandes itu adalah nama standar untuk gaya ini, periksa Google
Andrey
1
@Nocturne - Ya. Saya akan penasaran :)
Joel Etherton
1
"Nama metode dimulai dengan huruf kecil dalam kebanyakan bahasa" salah dalam pengalaman saya. Kebiasaan yang dimulai dengan huruf besar - dengan atau tanpa garis bawah kata-memisahkan - cukup umum, meskipun tidak harus dalam pedoman bahasa resmi. Sebagian besar standar bahasa tidak memiliki panduan gaya resmi tunggal. Cukup banyak bahasa (terutama yang lebih tua) yang mengabaikan huruf besar-kecil, dan sering kali menggunakan konvensi huruf kecil karena jangan-tekan-shift adalah aturan paling malas yang berarti Anda tidak mendapatkan ejaan huruf campuran yang diperlakukan sebagai kebingungan yang sama. .
Steve314

Jawaban:

27

Ini masalah selera. Seseorang pernah memutuskan untuk menggunakan gaya Pascal untuk nama dan itu menjadi standar.

Saya memiliki dugaan liar bahwa Anders Hejlsberg , yang adalah arsitek Delphi, penerus Pascal. Gaya case sama di sana seperti di C #.

Andrey
sumber
ini akan menjadi jawaban saya. : P
DevSolo
@DevSolo maaf, saya mulai mengetik jawaban ketika pertanyaan ada di Stackoverflow :)
Andrey
Saya berpikir bahwa akarnya lebih dalam ke sejarah kuno - lihat jawaban saya di bawah ini :)
davka
20

Jika Anda bertanya tentang alasan, berikut ini ada satu contoh langsung dari mulut kuda:

Sejarah seputar Pascal Casing dan Camel Casing artikel oleh Brad Abrams di blog MSDN

Dalam desain awal Kerangka kami memiliki ratusan jam perdebatan tentang gaya penamaan. Untuk memfasilitasi perdebatan ini, kami menciptakan sejumlah persyaratan. Dengan Anders Heilsberg (desainer asli Turbo Pascal ) anggota kunci tim desain, tidak heran kami memilih istilah Pascal Casing untuk gaya casing yang dipopulerkan oleh bahasa pemrograman Pascal ...

Konvensi Pascal Casing menggunakan huruf kapital untuk karakter pertama dari setiap kata (termasuk akronim lebih dari dua huruf) ...

Dan di sini adalah pedoman desain: Pedoman Desain untuk Pengembang Perpustakaan Kelas

Pedoman ini dimaksudkan untuk membantu perancang perpustakaan kelas memahami pertukaran antara berbagai solusi. Mungkin ada situasi di mana desain perpustakaan yang baik mengharuskan Anda melanggar pedoman desain ini. Kasus-kasus seperti itu harus jarang terjadi, dan penting bahwa Anda memberikan pembenaran yang kuat untuk keputusan Anda. Bagian ini memberikan penamaan dan pedoman penggunaan untuk jenis dalam .NET Framework serta pedoman untuk menerapkan pola desain umum ...

Yogesh
sumber
2
TurboPascaladalah bayi dari Philip Kahn(alias Borland) yang sangat nyaman bagi Microsoft untuk dilupakan. Politik ....
davka
1
Komentar pada tautan pertama bagus, lol.
jmq
7

Tidak tahu tentang filosofi, tetapi casing Pascal tampaknya umum di platform Microsoft sejak setidaknya Win32 API days.

Nemanja Trifunovic
sumber
8
dan aku masih membencinya, lol.
jmq
2

Saya tidak berpikir ada filosofi khusus di baliknya. Perlu ada pedoman, dan ada banyak hal yang mungkin memengaruhinya:

  • Mereka ingin menyingkirkan notasi awalan apa pun (baca Hungaria di sini)
  • Mereka ingin agar anggota lokal / pribadi dan anggota publik dibedakan dengan hanya membaca nama mereka.
  • Mereka tidak ingin kode C # terlihat seperti kode Java (yang banyak menggunakan case unta)
decyclone
sumber
Perhatikan bahwa panduan penamaan ini adalah untuk kerangka .NET dan bukan C # pada khususnya. Dalam VB.NET, bahasa yang tidak peka huruf besar kecil, konvensi tetap sama, tetapi Anda tidak dapat menggunakannya membedakan anggota pribadi dan publik berdasarkan kasus.
R. Martinho Fernandes
@ Martinho: setuju. tapi saya masih merasa adalah salah satu alasannya.
Decyclone
7
+1: "Mereka tidak ingin kode C # terlihat seperti kode Java (yang banyak menggunakan case unta)": Saya sangat curiga Anda ada di sini!
Giorgio
Apa yang ironis adalah bahwa meskipun beberapa orang membenci notasi Hungaria, Java dan C # mungkin akan menjadi bahasa yang jauh lebih baik dalam praktik jika mereka mengadopsi Apps Hungarian (atau konvensi penamaan lainnya) untuk membedakan bidang tipe referensi yang "memiliki" objek yang dapat diubah. diidentifikasi demikian, mereka yang mengidentifikasi contoh tipe-bisa-berubah yang tidak boleh dimutasi , dll. Bahkan jika Runtime tidak peduli dengan perbedaan seperti itu, tidak mungkin untuk menulis kode mana yang efisien dan benar tanpa mengetahui variabel mana dari jenis apa.
supercat
0

Saya tidak tahu bahwa ada "filosofi" di balik casing selain bagus dan ringkas dan dapat dengan mudah muncul sebagai beberapa kata tanpa menggunakan garis bawah.

Ada banyak variasi casing selama beberapa dekade terakhir. Mereka berkisar dari sangat singkat (lihat C dan pustaka C standar) untuk bertele-tele dengan garis bawah yang memisahkan setiap kata. Sementara konvensi penamaan .NET library masih cukup bertele-tele, saya pikir itu menyerang beberapa jalan tengah sejauh casing.

Jonathan Wood
sumber
5
jangan-lupakan-lisp-gaya-penamaan!
R. Martinho Fernandes
@ Martinho Fernandes sebenarnya dalam konteks bahasa c-like tidak valid.
Andrey
Ya, Lisp memperhitungkan spasi. (- var1 var2)
Michael K
@ Martinho Fernandes: Tentu saja, itu membutuhkan penggunaan ruang kosong untuk memisahkan token. Ini juga COBOL-STYLE-NAMING, yang membuatnya umum untuk bahasa yang paling saya kagumi dan paling tidak kagumi.
David Thornley
0

Mengambil tebakan liar (tapi bukan tidak masuk akal, IMHO) - desain C # diawasi oleh Niklaus Wirth , penemu asli Pascal. Lihat koneksinya? ... :)

Penasaran # 1: Saya sangat ingat pengumuman .NET dan C # (ya, saya prasejarah ...) dan bagaimana Microsoft membual dengan menyebutkan nama Wirth di C #. Namun, halaman Wikipedia tentang keduanya (C # dan Wirth) tidak menyebutkan ini.

Penasaran # 2: Meskipun disebut PascalCase, ia dipopulerkan oleh TurboPascalkompiler (yang akhirnya menjadi Borland), bukan bahasa itu sendiri.

davka
sumber
4
dan TurboPascal dirancang dan dibangun dengan mudah oleh Anders Hejlsberg ...
SWeko
3
Anders Hejlsberg adalah IIRC perancang utama Delphi, dan banyak bekerja pada Turbo Pascal, tetapi Turbo Pascal pada awalnya bukan bayinya (itu adalah Philip Kahns). Niklaus Wirth menciptakan Pascal asli dan membawanya melalui standardisasi, kemudian melihat standar tersebut diabaikan. Juga, Wirth telah pensiun hampir seumur hidup dari C #, dan sebelum itu merancang beberapa bahasa penerus-ke-Pascal (yang paling baru Oberon 2) jadi saya ragu dia memiliki keterlibatan langsung sama sekali. Microsoft membual keras tentang memiliki Hejlsberg di dalamnya. Turbo Pascal adalah produk Borland sejak awal.
Steve314
Saya tidak keberatan menurunkan peringkat - Saya punya cukup banyak poin di StackOverflow, tapi saya ingin tahu alasannya
davka