¿Cuál es la filosofía / razonamiento detrás de los nombres de métodos Pascal-casing de C #?

22

Estoy empezando a aprender C #. Viniendo de un fondo en Java, C ++ y Objective-C, encuentro que Pascal-Cing de C # sus nombres de métodos son bastante únicos, y es un poco difícil acostumbrarse al principio. ¿Cuál es el razonamiento y la filosofía detrás de esto?

Supongo que se debe a las propiedades de C #. A diferencia de Objective-C, donde los nombres de los métodos pueden ser exactamente iguales a las variables de una instancia, este no es el caso con C #. Supongo que uno de los objetivos con las propiedades (como lo es con la mayoría de los lenguajes que lo admiten) es hacer que las propiedades sean realmente indistinguibles de las variables y los métodos. Por lo tanto, uno puede tener una "int x" en C #, y la propiedad correspondiente se convierte en X. Para garantizar que las propiedades y los métodos no se puedan distinguir, todos los nombres de métodos que supongo también comenzarán con una letra mayúscula. (Esta es solo mi hipótesis basada en lo que sé de C # hasta ahora, todavía estoy aprendiendo). Tengo mucha curiosidad por saber cómo surgió esta curiosa guía (dado que '

(EDITAR: por Pascal-casing, me refiero a PascalCase (que es básicamente camelCase pero que comienza con una letra mayúscula). Los nombres de los métodos generalmente comienzan con una letra minúscula en la mayoría de los idiomas)

Nocturno
fuente
Si vieras que todos los miembros de una determinada familia tenían todas sus paredes pintadas con una insignia extraña en todas sus casas, ¿te gustaría saber por qué hicieron algo tan extraño?
Nocturne
1
¿Por qué crees que se llama caso Pascal ?
R. Martinho Fernandes
1
@Martinho Fernandes es el nombre estándar para este estilo, consulte Google
Andrey
1
@Nocturne: sí. Sería curioso :)
Joel Etherton
1
El "nombre de método comienza con una letra minúscula en la mayoría de los idiomas" es falso en mi experiencia. Las convenciones que comienzan con una letra mayúscula, con o sin subrayado de separación de palabras, son bastante comunes, aunque no necesariamente en las pautas oficiales del idioma. La mayoría de los estándares de idiomas no tienen ninguna guía de estilo oficial única. De todos modos, varios idiomas (principalmente los más antiguos) ignoran las mayúsculas y minúsculas, y a menudo tienen una convención de todo en minúsculas porque no presionar mayúsculas es la regla más vaga que significa que no se trata la ortografía de mayúsculas y minúsculas tratadas como la misma confusión .
Steve314

Respuestas:

27

Es cuestión de gustos. Una vez alguien decidió usar el estilo Pascal para los nombres y se convirtió en un estándar.

Supongo que fue Anders Hejlsberg , arquitecto de Delphi, sucesor de Pascal. El estilo del caso es el mismo que en C #.

Andrey
fuente
Esta iba a ser mi respuesta. : P
DevSolo
@DevSolo lo siento, comencé a escribir la respuesta cuando la pregunta estaba en Stackoverflow :)
Andrey
Creo que las raíces se adentran aún más en la historia antigua - vea mi respuesta a continuación :)
davka
20

Si está preguntando por razones, aquí hay una directamente de la boca del caballo:

Historia sobre el artículo de Pascal Casing y Camel Casing por Brad Abrams en los blogs de MSDN

En el diseño inicial del Framework tuvimos cientos de horas de debate sobre el estilo de los nombres. Para facilitar estos debates, acuñamos varios términos. Con Anders Heilsberg (el diseñador original de Turbo Pascal ) como miembro clave del equipo de diseño, no es de extrañar que hayamos elegido el término Pascal Casing para el estilo de carcasa popularizado por el lenguaje de programación Pascal ...

La convención de Pascal Casing pone en mayúscula el primer carácter de cada palabra (incluidos los acrónimos de más de dos letras de longitud) ...

Y aquí están las pautas de diseño: Pautas de diseño para desarrolladores de bibliotecas de clases

Estas pautas están destinadas a ayudar a los diseñadores de bibliotecas de clase a comprender las compensaciones entre las diferentes soluciones. Puede haber situaciones en las que un buen diseño de biblioteca requiera que usted viole estas pautas de diseño. Tales casos deberían ser raros, y es importante que proporcione una justificación sólida para su decisión. La sección proporciona pautas de nomenclatura y uso para tipos en .NET Framework, así como pautas para implementar patrones de diseño comunes ...

Yogesh
fuente
2
TurboPascales el bebé de Philip Kahn(aka Borland) que es muy conveniente que Microsoft olvide. Política ....
davka 01 de
1
Los comentarios en el primer enlace son geniales, jajaja.
jmq
7

No sé sobre filosofía, pero la carcasa de Pascal parece ser común en las plataformas de Microsoft desde al menos los días API de Win32.

Nemanja Trifunovic
fuente
8
y todavía lo odio, jajaja.
jmq
2

No creo que haya una filosofía específica detrás de esto. Debía haber pautas, y había muchos puntos que podrían haberlo afectado:

  • Querían deshacerse de cualquier nota de prefijo (lea en húngaro aquí)
  • Querían que los miembros locales / privados y los miembros públicos se distinguieran simplemente leyendo sus nombres.
  • No querían que el código C # se pareciera al código Java (que usa mucho el caso de camello)
deciclón
fuente
Tenga en cuenta que esta guía de nomenclatura es para .NET Framework y no para C # en particular. En VB.NET, un lenguaje que no distingue entre mayúsculas y minúsculas, la convención sigue siendo la misma, pero no puede usarla para distinguir entre miembros privados y públicos por caso.
R. Martinho Fernandes
@ Martininho: de acuerdo. pero todavía siento que esa fue una de las razones.
Decyclone
77
+1: "No querían que el código C # se pareciera al código Java (que usa mucho el caso del camello)": ¡Sospecho que estás aquí!
Giorgio
Lo irónico es que, a pesar del odio de algunas personas por la notación húngara, Java y C # probablemente habrían sido mucho mejores lenguajes en la práctica si hubieran adoptado Apps Hungarian (u otra convención de nomenclatura) para distinguir los campos de tipo de referencia que "poseen" un objeto mutable identificados de ese modo, aquellos que identifican una instancia de tipo mutable que nunca debe ser mutada , etc. Incluso si el Runtime no se preocupa por tales distinciones, es imposible escribir código que sea eficiente y correcto sin saber qué variables son de qué tipo.
supercat
0

No sé si hay una "filosofía" detrás de la carcasa, aparte de que es agradable y compacta, y puede aparecer fácilmente como palabras múltiples sin usar guiones bajos.

Ha habido muchas variaciones de carcasa en las últimas décadas. Han variado desde muy conciso (ver C y la biblioteca estándar de C) hasta detallado con guiones bajos que separan cada palabra. Si bien la convención de nomenclatura de bibliotecas .NET sigue siendo bastante detallada, creo que llega a un punto intermedio en cuanto a la carcasa.

Jonathan Wood
fuente
55
¡No olvides el estilo de lisp!
R. Martinho Fernandes
@Martinho Fernandes en realidad en el contexto de lenguajes tipo c no es válido.
Andrey
Sí, Lisp tiene en cuenta los espacios en blanco. (- var1 var2)
Michael K
@ Martinin Fernandes: Por supuesto, eso requiere el uso de espacios en blanco para separar las fichas. También es COBOL-STYLE-NAMING, que lo hace común a los idiomas que más admiro y menos admiro.
David Thornley
0

Tomando una conjetura salvaje (pero no irrazonable, en mi humilde opinión): el diseño de C # fue supervisado por Niklaus Wirth , el inventor original de Pascal. ¿Ves la conexión? ... :)

Curioso # 1: Recuerdo positivamente el anuncio de .NET y C # (sí, soy prehistórico ...) y cómo se jactó Microsoft al tener el nombre de Wirth en C #. Sin embargo, las páginas de Wikipedia sobre ninguno (C # y Wirth) mencionan esto.

Curioso n. ° 2: aunque se llama PascalCase, fue TurboPascalcompilado por el compilador (que finalmente se convirtió Borland), no por el lenguaje en sí.

davka
fuente
44
y TurboPascal fue convenientemente diseñado y construido por Anders Hejlsberg ...
SWeko
3
Anders Hejlsberg era IIRC, el diseñador principal de Delphi, y trabajó mucho en Turbo Pascal, pero Turbo Pascal no era originalmente su bebé (era Philip Kahns). Niklaus Wirth inventó el Pascal original y lo llevó a través de la estandarización, luego vio el estándar en gran parte ignorado. Además, Wirth ha sido retirado durante casi toda la vida de C #, y antes de eso diseñó varios lenguajes sucesores de Pascal (más recientemente Oberon 2), por lo que dudo que haya tenido alguna participación directa. Microsoft se jactó en voz alta de tener a Hejlsberg a bordo. Turbo Pascal fue un producto de Borland desde el principio.
Steve314
No me importa degradar: tengo suficientes puntos en StackOverflow, pero tengo curiosidad sobre el motivo
davka