C#のPascalケーシングメソッド名の背後にある哲学/理由は何ですか?


22

私はちょうどC#を学び始めています。Java、C ++、Objective-Cのバックグラウンドから来ると、C#のPascalのケースはメソッド名がかなりユニークで、最初は慣れるのが少し難しいと思います。この背後にある理由と哲学は何ですか?

私はそれがC#プロパティのためだと推測しています。メソッド名がインスタンス変数とまったく同じになるObjective-Cとは異なり、C#の場合はそうではありません。プロパティを使用する目標の1つは(プロパティをサポートするほとんどの言語の場合と同様)、プロパティを変数やメソッドとまったく区別できないものにすることです。したがって、C#で「int x」を使用すると、対応するプロパティがXになります。プロパティとメソッドを区別できないようにするため、推測するすべてのメソッド名も大文字で始まることが予想されます。(これは、これまでC#について知っていたことに基づいた私の仮説であり、まだ学習中です)。私はこの好奇心の強いガイドラインがどのように生まれたのか知りたいと思っています(

(編集:Pascal-casingとは、PascalCaseを意味します(基本的にはcamelCaseですが、大文字で始まります。ほとんどの言語では、メソッド名は通常小文字で始まります)。


ある家族のメンバー全員が、すべての家の壁すべてに奇妙な記章が描かれているのを見たら、なぜそんなに奇妙なことをしたのでしょうか?
ノクターン

1
なぜパスカルケースと呼ばれると思いますか?
R.マルティーニョフェルナンデス

1
@MartinhoフェルナンデスそれはGoogleのを確認し、このスタイルのための標準的な名前である
アンドレイ

1
@Nocturne-はい。私は好奇心が強いでしょう:)
ジョエルイーサートン

1
「ほとんどの言語では、メソッド名は小文字で始まります」は、私の経験では間違っています。大文字で始まる表記法-アンダースコアの単語区切りありまたはなし-が一般的ですが、必ずしも公式の言語ガイドラインではありません。ほとんどの言語標準には、公式のスタイルガイドはありません。かなり少数の言語(主に古い言語)はとにかく大文字と小文字を区別せず、多くの場合小文字の表記規則があります。 。
Steve314

回答:


27

それは好みの問題です。誰かがPascalスタイルを名前に使用することを決めたことがあり、標準になりました。

パスカルの後継者であるデルファイの建築家だったのはアンダース・ヘイルスベルグだったと思います。ケーススタイルはC#と同じです。


これが私の答えになるだろう。:P
DevSolo

@DevSoloごめんなさい、質問がStackoverflowにあったときに答えを入力し始めました:)
アンドレイ

私はルーツが古代史にさらに深くなると思う-私の答えは以下を参照してください:)
ダヴカ

20

理由について質問している場合は、馬の口からまっすぐに1つです。

MSDNブログのBrad AbramsによるPascalケーシングとキャメルケーシングの歴史に関する記事

フレームワークの初期設計では、命名スタイルについて数百時間の議論がありました。これらの議論を容易にするために、いくつかの用語を作成しました。Anders Heilsberg(Turbo Pascalの元デザイナー)が設計チームの主要メンバーであるため、Pascalプログラミング言語で普及したケーシングスタイルにPascal Casingという用語を選択したのも不思議ではありません...

パスカルケーシング規則は、各単語の最初の文字を大文字にします(長さが2文字以上の頭字語を含む)...

設計ガイドラインは次のとおりです。クラスライブラリ開発者向けの設計ガイドライン

これらのガイドラインは、クラスライブラリの設計者が異なるソリューション間のトレードオフを理解するのに役立つことを目的としています。優れたライブラリ設計では、これらの設計ガイドラインに違反する必要がある場合があります。そのようなケースはまれであるはずであり、あなたがあなたの決定に対して確固たる正当性を提供することが重要です。このセクションでは、.NET Frameworkの型の命名および使用のガイドラインと、一般的な設計パターンを実装するためのガイドラインを提供します...


2
TurboPascalは、Microsoftが忘れるのに非常に便利なPhilip Kahn(別名Borland)の赤ちゃんです。政治....
ダヴカ

1
最初のリンクのコメントは素晴らしいです、笑。
jmq


2

私はその背後に特定の哲学があったとは思わない。ガイドラインが必要であり、それに影響を与える可能性のある多くのポイントがありました。

  • 彼らは接頭辞表記を取り除きたいと思っていました(ここでハンガリー語を読んでください)
  • 彼らは、ローカル/プライベートメンバーとパブリックメンバーが名前を読むだけで区別されることを望んでいました。
  • 彼らはC#コードがJavaコードのように見えることを望んでいませんでした(これはキャメルケースを多用しています)

この命名ガイドラインは.NETフレームワーク向けであり、特にC#向けではないことに注意してください。大文字と小文字を区別しない言語であるVB.NETでは、規則は同じですが、プライベートメンバとパブリックメンバを大文字と小文字で区別することはできません。
R.マルティーニョフェルナンデス

@Martinho:同意しました。しかし、私はまだそれが理由の一つだと感じています。
デサイクロン

7
+1:「C#コードをJavaコードのように見せたくありませんでした(これはキャメルケースを頻繁に使用します)」:私はあなたがここにいると強く疑います!
ジョルジオ

皮肉なことに、一部の人々はハンガリーの表記法を嫌っていますが、JavaとC#は、可変オブジェクトを「所有する」参照型フィールドを区別するためにApps Hungarian(または他の命名規則)を採用していれば、おそらく実際にははるかに優れた言語であったでしょうそれによって特定され、可変型のインスタンスを識別するもの変異してはなりませんランタイムはそのような区別を気にしない場合でも等が、それは変数がどのような種類のである知らず、効率的かつ正確である書き込みコードすることは不可能です。
supercat

0

ケーシングの背後にある「哲学」は、コンパクトであり、アンダースコアを使用せずに複数の単語として簡単に表示できること以外はわかりません。

過去数十年にわたって、ケーシングには多くのバリエーションがありました。非常に簡潔なもの(Cおよび標準Cライブラリを参照)から、各単語をアンダースコアで区切った冗長なものまであります。.NETライブラリの命名規則はまだかなり冗長ですが、大文字と小文字の区別があると思います。


5
do-not-forget-lisp-style-naming!
R.マルティーニョフェルナンデス

@Martinho Fernandesは、実際にはcライクな言語のコンテキストでは無効です。
アンドレイ

うん、Lispは空白を考慮に入れている。(- var1 var2)
マイケルK

@Martinho Fernandes:もちろん、トークンを分離するには空白を使用する必要があります。また、COBOL-STYLE-NAMINGであるため、私が最も賞賛する言語と最も賞賛しない言語に共通しています。
デビッドソーンリー

0

ワイルドな(しかし、不当ではない、私見)推測-C#デザインは、パスカルの最初の発明者であるNiklaus Wirthによって監督されました。接続を参照してください...... :)

好奇心が強い#1:.NETとC#(はい、私は先史時代です...)の発表と、MicrosoftがC#にWirthの名前を持つことで自慢したことをはっきりと覚えています。しかし、どちらのウィキペディアのページ(C#とWirth)もこれに言及していません。

好奇心が強い#2:と呼ばPascalCaseれていますが、言語自体ではなく、TurboPascalコンパイラ(最終的にはBorland)によって普及しました。


4
およびTurboPascalはAnders Hejlsbergによって便利に設計および構築されました
...-SWeko

3
Anders HejlsbergはDelphiのリードデザイナーであるIIRCであり、Turbo Pascalで多くの仕事をしましたが、Turbo Pascalはもともと彼の赤ちゃんではありませんでした(Philip Kahnsでした)。Niklaus Wirthはオリジナルの Pascalを発明し、標準化を行った後、標準がほとんど無視されたのを見ました。また、WirthはC#のほぼ全期間にわたって引退し、それ以前にいくつかの後継パスカル言語(最近ではOberon 2)を設計したため、彼が直接関与したことはないと思います。マイクロソフトは、Hejlsbergの参加について大声で自慢しました。Turbo Pascalは最初からBorlandの製品でした。
Steve314

私はダウングレードを気にしない-私はStackOverflowの上で十分なポイントを持っていますが、私はその理由について好奇心
davka
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.