Quali sono le convenzioni preferite nella denominazione di attributi, metodi e classi nei diversi linguaggi?

StackOverflow https://stackoverflow.com/questions/49382

  •  09-06-2019
  •  | 
  •  

Domanda

Le convenzioni di denominazione sono simili nelle diverse lingue?In caso contrario, quali sono le differenze?

È stato utile?

Soluzione

Come altri hanno già detto, le cose variano molto, ma ecco una panoramica approssimativa delle convenzioni di denominazione più comunemente utilizzate nelle varie lingue:

lowercase, lowercase_with_underscores:

Comunemente utilizzato per variabili locali e nomi di funzioni (tipica sintassi C).

UPPERCASE, UPPERCASE_WITH_UNDERSCORES:

Comunemente utilizzato per costanti e variabili che non cambiano mai.Alcuni linguaggi (più vecchi) come il BASIC hanno anche una convenzione per l'uso di lettere maiuscole per tutti i nomi di variabile.

CamelCase, javaCamelCase:

Tipicamente utilizzato per nomi di funzioni e nomi di variabili.Alcuni lo usano solo per le funzioni e lo combinano con lowercase o lowercase_with_underscores per le variabili.Quando viene utilizzato javaCamelCase, in genere viene utilizzato sia per le funzioni che per le variabili.

Questa sintassi è abbastanza comune anche per le API esterne, poiché è così che lo fanno le API Win32 e Java.(Anche se una libreria utilizza internamente una convenzione diversa, in genere esporta con la sintassi (java)CamelCase per i nomi delle funzioni.)

prefix_CamelCase, prefix_lowercase, prefix_lowercase_with_underscores:

Comunemente utilizzato in linguaggi che non supportano gli spazi dei nomi (ad es.C).Il prefisso solitamente denota la libreria o il modulo a cui appartiene la funzione o la variabile.Solitamente riservato alle variabili globali e alle funzioni globali.Il prefisso può anche essere in MAIUSCOLO.Alcune convenzioni utilizzano il prefisso minuscolo per funzioni e variabili interne e il prefisso MAIUSCOLO per quelle esportate.

Naturalmente ci sono molti altri modi per nominare le cose, ma la maggior parte delle convenzioni si basa su uno di quelli menzionati sopra o su una varietà di questi.

A proposito:Ho dimenticato di menzionare apposta la notazione ungherese.

Altri suggerimenti

Ogni lingua ha uno stile specifico.Almeno una.Ogni progetto adotta uno stile specifico.Almeno dovrebbero.A volte può trattarsi di uno stile diverso dallo stile canonico utilizzato dalla tua lingua, probabilmente in base alle preferenze dei leader degli sviluppatori.

Quale stile utilizzare?

Se la tua lingua viene fornita con una buona libreria standard, prova ad adottare le convenzioni di quella libreria.

Se la tua lingua ha un libro canonico (The C Programming Language, The Camel Book, Programming Ruby ecc.) usalo.

A volte i progettisti del linguaggio (mi viene in mente C#, Java) in realtà scrivono un sacco di linee guida.Usateli, soprattutto se anche la comunità li adotta.

Se usi più lingue, ricorda di rimanere flessibile e adattare il tuo stile di codifica preferito alla lingua che stai utilizzando: quando codifichi in Python usa uno stile diverso rispetto alla codifica in C# ecc.

Buongiorno,

Uno dei migliori consigli che posso dare è leggere le sezioni pertinenti di Code Complete di Steve McConnell (Collegamento Amazon).Ha un'eccellente discussione sulle tecniche di denominazione.

HTH

saluti,

rapinare

Naturalmente ci sono alcune linee guida comuni ma ci sono anche differenze dovute alla differenza nella sintassi/progettazione del linguaggio.

Per .NET (C#, VB, ecc.) Consiglierei la seguente risorsa:

Penso che la maggior parte delle convenzioni di denominazione varieranno, ma lo sviluppatore, ad esempio, nomino variabili come:mulitwordVarName, tuttavia alcuni degli sviluppatori con cui ho lavorato hanno usato qualcosa come mulitword_var_name o multiwordvarname o aj5g54ag o...Penso che dipenda davvero dalle tue preferenze.

Anni fa un vecchio e saggio programmatore mi insegnò i mali di Notazione ungherese, questo era un vero e proprio sistema legacy, Microsoft lo ha adottato in qualche modo nell'SDK di Windows e successivamente in MFC.È stato progettato per linguaggi a tipizzazione libera come il C e non per linguaggi a tipizzazione forte come il C++.All'epoca stavo programmando Windows 3.0 utilizzando Turbo Pascal 1.0 per Windows di Borland, che in seguito divenne Delphi.

Comunque, per farla breve, in quel momento il team su cui stavo lavorando sviluppò i nostri standard molto semplici e applicabili a quasi tutte le lingue, basati su prefissi semplici -

  • a - argomento
  • l - locale
  • m - membro
  • g - globale

L'enfasi qui è sull'ambito, fare affidamento sul compilatore per verificare il tipo, tutto ciò di cui devi preoccuparti è l'ambito, dove risiedono i dati.Ciò presenta molti vantaggi rispetto alla vecchia notazione ungherese in quanto se cambi il tipo di qualcosa tramite il refactoring non devi cercare e sostituire tutte le sue istanze.

Quasi 16 anni dopo promuovo ancora l'uso di questa pratica e l'ho trovata applicabile a quasi tutte le lingue in cui mi sono sviluppato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top