Por que XMLHttpRequest parece não seguir uma convenção de nomenclatura?


28

Eu tenho trabalhado com o objeto XMLHttpRequest em JavaScript recentemente e não pude deixar de notar que a caixa desse nome não faz sentido. Por que 'XML' está tudo em maiúsculas enquanto 'Http' não? Ambos são siglas!

Certamente faria mais sentido que o nome fosse um dos seguintes:

  • XmlHttpRequest (PascalCase, prática recomendada para nomes de classe em JavaScript)
  • xmlHttpRequest (camelCase, também comum, embora não seja para classes)
  • XMLHTTPRequest (caps-for-siglas, raramente usado em programação?)

Tenho certeza de que deve haver algum motivo e eu odiaria pensar que agora está gravado em pedra só porque ninguém questionou isso na época. Existe outra convenção de nomes que eu desconheço?


9
Sidenote: Java tem uma inconsistência de nomeação muito semelhantes: A HttpURLConnection.
Joachim Sauer

6
Sidenote # 2: Pelo menos aqueles que estão escritas corretamente, ao contrário do HTTP_REFERERcabeçalho ...
OnoSendai

3
Eu suspeito que isso se enquadre na categoria "Alguns desenvolvedores cometeram um erro e agora não podemos corrigi-lo", mas é provável que apenas uma pessoa no mundo saiba a resposta real.
Martin Brown

11
No entanto, você não se pergunta por que tem XML (ou mesmo HTTP) no nome em primeiro lugar?
Pare de prejudicar Monica

Respostas:


15

Curiosamente, a Microsoft o chamou pela primeira vez IXMLHTTPRequestquando foi adicionado à biblioteca MSXML .

Foi a Mozilla que usou o nome XMLHttpRequestao adicionar o conceito ao Gecko, implementando a idéia de imitar a interface do MS. Desde então, tornou-se o padrão defacto, vinculando todas as outras implementações à decisão da Mozilla.

Você teria que fazer spelunking no Mozilla Bugzilla para ver se pode encontrar algum motivo para a troca de bonés por lá, mas suspeito que não houve muita reflexão e que as letras minúsculas da ttppeça são acidentais.

Isso é corroborado pelo erro de ortografia da interface da Microsoft na definição da interface nsIXMLHttpRequest (primeira revisão no repositório Mozilla Mercurial) :

O XMLHttpRequest da Mozilla é modelado após o objeto IXMLHttpRequest da Microsoft. O objetivo tem sido fazer com que a versão do Mozilla corresponda à versão da Microsoft o mais próximo possível, mas é provável que haja algumas diferenças.


Ah, entendo, então é intencional, na medida em que se baseia em uma instância anterior da ortografia. Ainda não gosto - mas pelo menos consigo entender como isso aconteceu. Obrigado por uma excelente resposta.
Alec

6
Observe que, embora XML e URL sejam geralmente todos em maiúsculas, as referências a http em minúsculas são onipresentes em HTML. Portanto, XMLHttpRequestpode ser visto como revestimento de camelo dos identificadores combinados.
hardmath

2
Se você voltar à primeira revisão no CVS: bonsai.mozilla.org/cvsblame.cgi?file=mozilla/content/base/… É assim. O autor original era Vidur Apparao, então talvez alguém possa localizá-lo (hoje ele é CTO da Agari: agari.com/team/vidur-apparao ) e perguntar a ele. Infelizmente, não há nada no bugzilla sobre isso, nos dias da Netscape eles não eram ótimos em registrar bugs para rastrear o trabalho.
Ted Mielczarek

4

Algumas diretrizes de nomenclatura fazem uma distinção entre acrônimos "curtos" e "longos". Por exemplo, o guia de estilo de codificação para o tempo de execução .Net da Microsoft especifica que siglas curtas devem estar em maiúsculas, enquanto siglas longas devem ter apenas a primeira letra maiúscula. Seu limite para um acrônimo longo é de 3 letras, portanto favoreceria "XmlHttpRequest", no entanto, não é razoável pensar que algumas pessoas possam usar uma regra semelhante com 4 caracteres como o limite.

Examinei cópias antigas do guia de estilo do mozilla.org, e nenhuma parece especificar nada sobre acrônimos, mas é possível que um guia mais antigo do Netscape o tenha feito ou que o desenvolvedor estivesse aplicando uma regra que ele havia adotado em outros lugares.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.