Qual è la filosofia / ragionamento dietro i nomi dei metodi di Pascal-casing di C #?


22

Sto solo iniziando a imparare C #. Provenendo da un background in Java, C ++ e Objective-C, trovo che Pascal di C # abbia i suoi nomi di metodi piuttosto unici e un po 'difficili a cui abituarsi all'inizio. Qual è il ragionamento e la filosofia dietro questo?

Immagino sia a causa delle proprietà di C #. A differenza di Objective-C, dove i nomi dei metodi possono essere esattamente gli stessi delle variabili di un'istanza, questo non è il caso di C #. Immagino che uno degli obiettivi con le proprietà (come accade con la maggior parte dei linguaggi che lo supportano) sia rendere le proprietà veramente indistinguibili da variabili e metodi. Quindi, si può avere una "int x" in C # e la proprietà corrispondente diventa X. Per garantire che le proprietà e i metodi siano indistinguibili, tutti i nomi di metodo che suppongo dovrebbero quindi iniziare con una lettera maiuscola. (Questa è solo la mia ipotesi basata su ciò che so di C # finora - sto ancora imparando). Sono molto curioso di sapere come è nata questa curiosa linea guida (dato che

(EDIT: per Pascal-casing, intendo PascalCase (che è fondamentalmente camelCase ma che inizia con una lettera maiuscola). I nomi dei metodi in genere iniziano con una lettera minuscola nella maggior parte delle lingue)


Se vedessi che tutti i membri di una certa famiglia avevano tutte le loro pareti in tutte le loro case dipinte con una strana insegna, saresti curioso di sapere perché hanno fatto una cosa così strana?
Notturno

1
Perché pensi che si chiama caso Pascal ?
R. Martinho Fernandes,

1
@Martinho Fernandes è il nome standard per questo stile, controlla Google
Andrey

1
@ Notturno - Sì. Sarei curioso :)
Joel Etherton

1
"I nomi dei metodi iniziano con una lettera minuscola nella maggior parte delle lingue" è falso nella mia esperienza. Le convenzioni che iniziano con una lettera maiuscola - con o senza sottolineatura che separa le parole - sono abbastanza comuni, sebbene non necessariamente nelle linee guida ufficiali della lingua. La maggior parte degli standard linguistici non prevede guide di stile ufficiali. Parecchie lingue (principalmente più vecchie) ignorano comunque il caso e spesso hanno una convenzione tutto minuscolo perché il non-press-shift è la regola più pigra che significa che non si ottengono ortografie in casi misti diversi trattati come la stessa confusione .
Steve314,

Risposte:


27

È questione di gusti. Qualcuno una volta ha deciso di utilizzare lo stile Pascal per i nomi ed è diventato uno standard.

Suppongo che sia stato Anders Hejlsberg , architetto di Delfi, successore di Pascal. Lo stile del case è lo stesso di C #.


questa sarebbe stata la mia risposta. : P
DevSolo

@DevSolo mi dispiace, ho iniziato a digitare la risposta quando la domanda era su Stackoverflow :)
Andrey

Penso che le radici siano ancora più profonde nella storia antica - vedi la mia risposta di seguito :)
davka

20

Se stai chiedendo delle ragioni, eccone una direttamente dalla bocca del cavallo:

Storia di Pascal Casing e Camel Casing articolo di Brad Abrams sui blog MSDN

Nella progettazione iniziale del Framework abbiamo avuto centinaia di ore di dibattito sullo stile dei nomi. Per facilitare questi dibattiti abbiamo coniato una serie di termini. Con Anders Heilsberg (il designer originale di Turbo Pascal ) un membro chiave del team di progettazione, non c'è da meravigliarsi che abbiamo scelto il termine involucro Pascal per lo stile dell'involucro reso popolare dal linguaggio di programmazione Pascal ...

La convenzione di Pascal Casing mette in maiuscolo il primo carattere di ogni parola (compresi gli acronimi di lunghezza superiore a due lettere) ...

Ed ecco le linee guida per la progettazione: Linee guida per la progettazione per gli sviluppatori di biblioteche di classi

Queste linee guida hanno lo scopo di aiutare i progettisti di biblioteche di classe a comprendere i compromessi tra le diverse soluzioni. Potrebbero esserci situazioni in cui una buona progettazione della biblioteca richiede la violazione di queste linee guida di progettazione. Tali casi dovrebbero essere rari ed è importante fornire una solida giustificazione per la tua decisione. La sezione fornisce linee guida per la denominazione e l'uso dei tipi in .NET Framework, nonché linee guida per l'implementazione di modelli di progettazione comuni ...


2
TurboPascalè il bambino di Philip Kahn(aka Borland) che è molto comodo da dimenticare per Microsoft. Politica ....
davka

1
I commenti sul primo link sono fantastici, lol.
jmq

7

Non conosco la filosofia, ma il case di Pascal sembra essere comune sulle piattaforme Microsoft da almeno i giorni API di Win32.


8
e lo odio ancora, lol.
jmq

2

Non credo che ci fosse una filosofia specifica dietro di essa. Dovevano esserci delle linee guida e c'erano molti punti che potrebbero averlo influenzato:

  • Volevano sbarazzarsi di qualsiasi notazione di prefisso (leggi l'ungherese qui)
  • Volevano che i membri locali / privati ​​e i membri pubblici fossero distinti semplicemente leggendo i loro nomi.
  • Non volevano che il codice C # fosse simile al codice Java (che usa pesantemente il caso del cammello)

Si noti che questa linea guida per la denominazione si riferisce al framework .NET e non a C # in particolare. In VB.NET, un linguaggio senza distinzione tra maiuscole e minuscole, la convenzione rimane la stessa, ma non è possibile utilizzarla per distinguere i membri privati ​​e pubblici per caso.
R. Martinho Fernandes,

@Martinho: d'accordo. ma sento ancora che è stato uno dei motivi.
deciclone

7
+1: "Non volevano che il codice C # fosse simile al codice Java (che usa pesantemente il caso dei cammelli)": Sospetto fortemente che tu sia qui!
Giorgio,

La cosa ironica è che nonostante l'odio di alcune persone per la notazione ungherese, Java e C # probabilmente sarebbero stati entrambi linguaggi molto migliori in pratica se avessero adottato Apps ungherese (o altra convenzione di denominazione) per distinguere i campi di tipo di riferimento che "possiedono" un oggetto mutabile identificato in tal modo, quelli che identificano un'istanza di tipo mutabile che non deve mai essere mutata , ecc. Anche se il Runtime non si preoccupa di tali distinzioni, è impossibile scrivere un codice che sia efficiente e corretto senza sapere quali variabili sono di che tipo.
supercat

0

Non so che c'è una "filosofia" dietro l'involucro diverso da quello che è bello e compatto e può facilmente apparire come più parole senza usare caratteri di sottolineatura.

Ci sono state molte varianti di involucro negli ultimi decenni. Hanno spaziato da molto conciso (vedi C e la libreria C standard) a dettagliato con caratteri di sottolineatura che separano ogni parola. Mentre la convenzione di denominazione della libreria .NET è ancora piuttosto dettagliata, penso che colpisca una via di mezzo per quanto riguarda il case.


5
do-not-forget-lisp-style-denominazione!
R. Martinho Fernandes,

@Martinho Fernandes in realtà nel contesto di linguaggi simil-c non è valido.
Andrey,

Sì, Lisp tiene conto degli spazi bianchi. (- var1 var2)
Michael K

@Martinho Fernandes: Certo, ciò richiede l'uso di spazi bianchi per separare i token. È anche COBOL-STYLE-NAMING, che lo rende comune alle lingue che ammiro di più e che ammiro di meno.
David Thornley, l'11

0

Prendendo un'ipotesi selvaggia (ma non irragionevole, IMHO) - il design di C # è stato supervisionato da Niklaus Wirth , l'inventore originale di Pascal. Vedi la connessione? ... :)

Curioso # 1: ricordo positivamente l'annuncio di .NET e C # (sì, sono preistorico ...) e di come Microsoft si vantava di avere il nome di Wirth su C #. Tuttavia, le pagine di Wikipedia su nessuno dei due (C # e Wirth) menzionano questo.

Curioso # 2: Sebbene sia chiamato PascalCase, è stato reso popolare dal TurboPascalcompilatore (che alla fine è diventato Borland), non dal linguaggio stesso.


4
e TurboPascal è stato convenientemente progettato e costruito da Anders Hejlsberg ...
SWeko

3
Anders Hejlsberg era IIRC il capo progettista di Delphi, e ha lavorato molto su Turbo Pascal, ma Turbo Pascal non era originariamente suo figlio (era Philip Kahns). Niklaus Wirth inventò l' originale Pascal e lo portò attraverso la standardizzazione, quindi vide lo standard ampiamente ignorato. Inoltre, Wirth è stato ritirato per quasi tutta la vita di C #, e prima di allora ha progettato diverse lingue successive a Pascal (più recentemente Oberon 2), quindi dubito che abbia avuto un coinvolgimento diretto. Microsoft si vantava di avere Hejlsberg a bordo. Turbo Pascal è stato un prodotto Borland sin dall'inizio.
Steve314,

Non mi dispiace il downgrade - Ho abbastanza punti su StackOverflow, ma sono curioso del motivo
davka
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.