Почему XMLHttpRequest не соответствует соглашению об именах?


28

Я недавно работал с объектом XMLHttpRequest в JavaScript, и я не мог не заметить, что использование этого имени не имеет смысла. Почему «XML» в заглавных буквах, а «Http» - нет? Они оба аббревиатуры!

Конечно, было бы более разумно, чтобы имя было одним из следующих:

  • XmlHttpRequest (PascalCase, лучшая практика для имен классов в JavaScript)
  • xmlHttpRequest (camelCase, также распространенный, но не для классов)
  • XMLHTTPRequest (заглавные буквы, редко используемые в программировании?)

Я уверен, что должна быть какая-то причина, и я не хотел бы думать, что это теперь установлено в камне только потому, что никто не подверг сомнению это в то время. Есть ли другое соглашение об именах, о котором я не знаю?


9
Примечание: Java имеет очень похожую несоответствие именования HttpURLConnection.
Иоахим Зауэр

6
Sidenote # 2: По крайней мере, те, которые написаны правильно, в отличие от HTTP_REFERERзаголовка ...
OnoSendai

3
Я подозреваю, что это подпадает под категорию «Некоторые разработчики допустили ошибку, и теперь мы не можем ее исправить», но, вероятно, в мире есть только один человек, который знает фактический ответ.
Мартин Браун

1
Тем не менее, вы не удивляетесь, почему он имеет XML (или даже HTTP) в названии?
Стоп Harm Monica

Ответы:


15

Интересно, что Microsoft впервые назвала его, IXMLHTTPRequestкогда он был впервые добавлен в библиотеку MSXML .

Именно Mozilla использовала это имя, XMLHttpRequestкогда добавила концепцию в Gecko, реализовав идею имитации интерфейса MS. С тех пор он стал стандартом де-факто, привязав все другие реализации к решению Mozilla.

Тебе нужно было бы побыть в Mozilla Bugzilla, чтобы посмотреть, сможешь ли ты найти какие-либо причины для изменения там заглавных букв, но я подозреваю, что не так уж много думал об этом, и нижний корпус ttpдетали был случайным.

Это подтверждается неправильным написанием интерфейса Microsoft в определении интерфейса nsIXMLHttpRequest (самая ранняя редакция в репозитории Mozilla Mercurial) :

XMLHttpRequest Mozilla смоделирован после объекта Microsoft IXMLHttpRequest. Цель состояла в том, чтобы сделать версию Mozilla максимально приближенной к версии Microsoft, но есть определенные различия.


Ах, я вижу, так что это намеренно, поскольку оно основано на более раннем случае написания. Мне все еще не нравится это - но по крайней мере я могу понять, как это случилось. Спасибо за отличный ответ.
Алек

6
Обратите внимание, что, хотя XML и URL обычно являются заглавными буквами, ссылки на строчные буквы http вездесущи в HTML. Таким образом, XMLHttpRequestможет рассматриваться как верблюжья оболочка комбинированных идентификаторов.
hardthth

2
Если вы вернетесь к первой версии CVS, выполните следующие действия : bonsai.mozilla.org/cvsblame.cgi?file=mozilla/content/base/… Это так. Первоначальным автором был Vidur Apparao, так что, возможно, кто-то сможет его разыскать (сейчас он технический директор Agari : agari.com/team/vidur-apparao ) и спросить его. К сожалению, в Bugzilla нет ничего по этому поводу, еще в дни Netscape они не были хороши в регистрации ошибок для отслеживания работы.
Тед Мельчарек

4

В некоторых правилах именования проводится различие между «короткими» и «длинными» акронимами. Например, в руководстве по стилю кодирования для среды выполнения Microsoft .Net указано, что короткие аббревиатуры должны быть в заглавных буквах, в то время как длинные аббревиатуры должны иметь только первую букву в верхнем регистре. Их порог для длинной аббревиатуры составляет 3 буквы, поэтому предпочел бы «XmlHttpRequest», однако не исключено, что некоторые люди могут использовать подобное правило с 4 символами в качестве порога.

Я просмотрел старые копии руководства по стилю mozilla.org, и ни в одном из них, похоже, ничего не указано об акронимах, но возможно, что это было либо в более старом руководстве Netscape, либо в том, что разработчик применял правило, которое он взял в другом месте.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.