Qual é a filosofia / raciocínio por trás dos nomes dos métodos de case Pascal do C #?


22

Estou apenas começando a aprender c #. Vindo de um background em Java, C ++ e Objective-C, acho o Pascal do C # um nome de método bastante exclusivo, e um pouco difícil de se acostumar no início. Qual é o raciocínio e a filosofia por trás disso?

Eu estou supondo que é por causa das propriedades c #. Ao contrário do Objective-C, onde os nomes dos métodos podem ser exatamente os mesmos que as variáveis ​​de uma instância, esse não é o caso do C #. Eu acho que um dos objetivos das propriedades (como é a maioria das linguagens que as suportam) é tornar as propriedades verdadeiramente indistinguíveis das variáveis ​​e métodos. Portanto, pode-se ter um "int x" em C # e a propriedade correspondente se torna X. Para garantir que as propriedades e os métodos sejam indistinguíveis, todos os nomes de métodos que eu acho que também devem começar com uma letra maiúscula. (Essa é apenas minha hipótese baseada no que sei sobre C # até agora - ainda estou aprendendo). Estou muito curioso para saber como essa orientação curiosa surgiu (considerando que '

(EDIT: Por letra Pascal, quero dizer PascalCase (que é basicamente camelCase, mas começa com uma letra maiúscula). Os nomes dos métodos geralmente começam com uma letra minúscula na maioria dos idiomas)


Se você visse que todos os membros de uma determinada família tinham todas as paredes em todas as casas pintadas com uma insígnia estranha, ficaria curioso para saber por que eles fizeram uma coisa tão estranha?
Nocturne

1
Por que você acha que é chamado caso Pascal ?
R. Martinho Fernandes,

1
@Martinho Fernandes é o nome padrão para este estilo, confira Google
Andrey

1
@ Noturno - Sim. Eu seria curioso :)
Joel Etherton

1
O "nome dos métodos começa com uma letra minúscula na maioria dos idiomas" é falso na minha experiência. As convenções que começam com uma letra maiúscula - com ou sem sublinhado de separação de palavras - são bastante comuns, embora não necessariamente nas diretrizes oficiais do idioma. A maioria dos padrões de idioma não possui nenhum guia oficial de estilo. Muitos idiomas (principalmente os mais antigos) ignoram maiúsculas e minúsculas, e muitas vezes têm uma convenção tudo em minúsculas, porque não pressionar a tecla shift é a regra mais preguiçosa que significa que você não recebe grafias com maiúsculas e minúsculas diferentes tratadas como a mesma confusão .
31311 Steve314

Respostas:


27

É questão de gosto. Alguém uma vez decidiu usar o estilo Pascal para nomes e isso se tornou um padrão.

Eu acho que Anders Hejlsberg , arquiteto de Delphi, sucessor de Pascal. O estilo do caso é o mesmo em C #.


essa seria a minha resposta. : P
DevSolo

@DevSolo desculpe, eu comecei a digitar resposta quando a pergunta foi a Stackoverflow :)
Andrey

Eu acho que as raízes ir ainda mais fundo na história antiga - veja minha resposta abaixo :)
davka

20

Se você está perguntando sobre razões, aqui está uma diretamente da boca do cavalo:

História sobre o artigo de Pascal Casing e Camel Casing por Brad Abrams nos blogs do MSDN

No design inicial do Framework, tivemos centenas de horas de debate sobre o estilo de nomeação. Para facilitar esses debates, criamos vários termos. Com Anders Heilsberg (o designer original do Turbo Pascal ), um membro importante da equipe de design, não é de admirar que tenhamos escolhido o termo Cascal Pascal para o estilo de revestimento popularizado pela linguagem de programação Pascal ...

A convenção Pascal Casing coloca em maiúscula o primeiro caractere de cada palavra (incluindo siglas com mais de duas letras) ...

E aqui estão as diretrizes de design: Diretrizes de design para desenvolvedores de bibliotecas de classes

Essas diretrizes visam ajudar os designers de bibliotecas de classes a entender as vantagens e desvantagens entre diferentes soluções. Pode haver situações em que um bom design de biblioteca exige que você viole essas diretrizes de design. Esses casos devem ser raros e é importante que você forneça uma justificativa sólida para sua decisão. A seção fornece diretrizes de nomenclatura e uso para tipos no .NET Framework, bem como diretrizes para implementar padrões de design comuns ...


2
TurboPascalé o bebê de Philip Kahn(aka Borland), o que é muito conveniente para a Microsoft esquecer. Política ....
davka 01/03

1
Os comentários no primeiro link são ótimos, lol.
JMQ

7

Não conheço a filosofia, mas o case Pascal parece ser comum nas plataformas Microsoft desde pelo menos os dias da API do Win32.


8
e eu ainda odeio isso, lol.
JMQ

2

Eu não acho que havia uma filosofia específica por trás disso. Precisava haver diretrizes e havia muitos pontos que podem ter afetado:

  • Eles queriam se livrar de qualquer notação de prefixo (leia húngaro aqui)
  • Eles queriam que os membros locais / privados e públicos fossem distinguidos apenas lendo seus nomes.
  • Eles não queriam que o código C # se parecesse com o código Java (que usa muito o caso camel)

Observe que esta diretriz de nomenclatura é para a estrutura .NET e não para C # em particular. No VB.NET, uma linguagem que não diferencia maiúsculas de minúsculas, a convenção permanece a mesma, mas você não pode usá-la para distinguir membros privados e públicos por caso.
R. Martinho Fernandes

@ Martinho: concordou. mas ainda sinto que essa foi uma das razões.
Decyclone 1/1

7
+1: "Eles não queriam que o código C # se parecesse com o código Java (que usa muito o caso camel)": suspeito que você esteja aqui!
Giorgio

O que é irônico é que, apesar do ódio de algumas pessoas pela notação húngara, Java e C # provavelmente teriam sido linguagens muito melhores na prática se tivessem adotado o Apps Hungarian (ou outra convenção de nomenclatura) para distinguir campos do tipo de referência que "possuem" um objeto mutável identificados assim, aqueles que identificam uma instância do tipo mutável que nunca deve ser mutada etc. Mesmo que o Runtime não se importe com essas distinções, é impossível escrever um código que seja eficiente e correto sem saber quais variáveis ​​são de que tipo.
Supercat

0

Não sei se existe uma "filosofia" por trás da caixa que não seja agradável e compacta e possa aparecer facilmente como várias palavras sem usar sublinhados.

Houve muitas variações de revestimento nas últimas décadas. Eles variaram de muito concisa (consulte C e a biblioteca C padrão) a detalhada com sublinhados que separam cada palavra. Embora a convenção de nomenclatura da biblioteca .NET ainda seja bastante detalhada, acho que atinge um meio termo até o caso.


5
nomear não-esqueça-lisp-estilo!
R. Martinho Fernandes,

@Martinho Fernandes, na verdade, no contexto de linguagens do tipo c, não é válido.
Andrey

Sim, o Lisp leva em consideração o espaço em branco. (- var1 var2)
Michael K

@Martinho Fernandes: Claro, isso requer o uso de espaço em branco para separar os tokens. Também é denominação de estilo COBOL, o que torna comum os idiomas que mais admiro e menos admiro.
David Thornley

0

Tomando um palpite selvagem (mas não irracional, IMHO) - o projeto C # foi supervisionado por Niklaus Wirth , o inventor original de Pascal. Veja a conexão? ... :)

Curioso nº 1: Lembro-me positivamente do anúncio do .NET e C # (sim, sou pré-histórico ...) e de como a Microsoft se gabava de ter o nome de Wirth em C #. No entanto, as páginas da Wikipedia em nenhum (C # e Wirth) mencionam isso.

Curioso # 2: Embora seja chamado PascalCase, foi popularizado pelo TurboPascalcompilador (que acabou se tornando Borland), e não pelo próprio idioma.


4
e TurboPascal foi convenientemente projetado e construído por Anders Hejlsberg ...
Sweko

3
Anders Hejlsberg foi o IIRC, o designer principal do Delphi, e trabalhou muito no Turbo Pascal, mas o Turbo Pascal não era originalmente seu bebê (era Philip Kahns). Niklaus Wirth inventou o Pascal original e o levou à padronização, depois viu o padrão amplamente ignorado. Além disso, Wirth foi aposentado por quase toda a vida de C #, e antes disso projetou várias línguas sucessoras de Pascal (mais recentemente, Oberon 2), então duvido que ele tenha tido algum envolvimento direto. A Microsoft se gabou alto de ter Hejlsberg a bordo. O Turbo Pascal foi um produto da Borland desde o início.
31311 Steve314

Não me importo de rebaixamento - Eu tenho bastante pontos em StackOverflow, mas estou curioso sobre a razão
davka
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.