XMLHttpRequestが命名規則に従っていないように見えるのはなぜですか?


28

私は最近JavaScriptでXMLHttpRequestオブジェクトを操作してきましたが、この名前の大文字と小文字が意味をなさないことに気づかずにはいられませんでした。「XML」はすべて大文字ですが、「Http」は大文字ではないのはなぜですか?両方とも頭字語です!

名前が次のいずれかであると、より意味があります。

  • XmlHttpRequest (PascalCase、JavaScriptのクラス名のベストプラクティス)
  • xmlHttpRequest (camelCase、クラス用ではないが一般的)
  • XMLHTTPRequest (頭字語のキャップ、プログラミングではめったに使用されない?)

何らかの理由があるに違いないと確信しているし、誰もこれを疑問視しなかったからといって、今ではそれが石になっているとは思わない。私が知らない別の命名規則はありますか?


9
サイドノート:Javaには、非常によく似た命名の矛盾がありますHttpURLConnection
ヨアヒムザウアー

6
追記#2:それらが正しくとは異なり、綴られている少なくともHTTP_REFERERヘッダ...
OnoSendai

3
これは「一部の開発者がミスを犯し、今では修正できない」というカテゴリーに該当するのではないかと思いますが、実際の答えを知っている人は世界にたった一人しかいないでしょう。
マーティンブラウン14

1
しかし、そもそもなぜ名前にXML(または実際にはHTTP)が含まれているのか不思議に思わないでしょうか?
停止ハーミングモニカ

回答:


15

興味深いことに、Microsoft はMSXMLライブラリIXMLHTTPRequest最初に追加されたときに最初に呼び出しました。

XMLHttpRequestGeckoにコンセプトを追加するときに名前を使用したのはMozillaで、MSインターフェースを模倣するというアイデアを実装していました。それは事実上の標準になり、他のすべての実装をMozillaの決定に結び付けました。

Mozilla Bugzillaを詳しく調べてみる必要があります。を詳しく調べて、上限が変更された理由を見つけることができるかどうかを確認する必要がありますが、あまりttpが誤っていると思われます。

これは、nsIXMLHttpRequestインターフェース定義(Mozilla Mercurialリポジトリの最も早いリビジョン)のMicrosoftインターフェースのスペルミスによって裏付けられています。

MozillaのXMLHttpRequestは、MicrosoftのIXMLHttpRequestオブジェクトをモデルにしています。目標は、MozillaのバージョンをMicrosoftのバージョンと可能な限り一致させることですが、いくつかの違いがあるはずです。


ああ、それはスペルの以前のインスタンスに基づいている限り、意図的なものです。私はまだそれが好きではありません-しかし、少なくとも私はそれがどのようになったかを理解できます。すばらしい回答をありがとう。
アレック

6
通常、XMLとURLはすべて大文字ですが、小文字のhttpへの参照はHTMLのいたるところにあることに注意してください。したがって、結合された識別子のキャメルケースXMLHttpRequestと見なされる場合があります。
ハードマス

2
CVSの最初のリビジョンに戻ると、bonsai.mozilla.org / cvsblame.cgi?file = mozilla / content / base / のようになります。元の作者はVidur Apparaoだったので、誰かが彼を追跡できます(彼は最近AgariのCTOであるagari.com/team/vidur-apparao)。残念ながら、これについてはbugzillaには何もありません。Netscapeの時代には、彼らは作業を追跡するためにバグをファイリングすることについてあまりよくありませんでした。
テッドメルツァレック14

4

一部の命名ガイドラインでは、「短い」頭字語と「長い」頭字語を区別しています。たとえば、Microsoftの.Netランタイムのコーディングスタイルガイドでは、短い頭字語は大文字で、長い頭字語は最初の文字のみを大文字にする必要があると規定されています。長い頭字語のしきい値は3文字であるため、 "XmlHttpRequest"が有利ですが、一部の人々が4文字をしきい値として同様のルールを使用すると考えるのは不合理ではありません。

mozilla.orgスタイルガイドの古いコピーを見てきましたが、頭字語について何も指定していないようですが、古いNetscapeガイドがそうであったか、開発者が他の場所で選んだルールを適用していた可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.