Che cosa fai quando la tua convenzione di denominazione si scontra con la tua lingua?

14

Ok, questa è una di quelle piccole cose che mi hanno sempre infastidito. Generalmente non abbrevia gli identificatori e l'unica volta che utilizzo un identificatore breve (ad esempio i ) è per un ciclo stretto. Quindi mi irrita quando lavoro in C ++ e ho una variabile che deve essere chiamata operator o class e devo aggirarla o usare un'abbreviazione, perché finisce fuori. Avvertenza: questo può accadermi sproporzionatamente spesso perché lavoro molto nella programmazione del linguaggio di programmazione, dove gli oggetti del dominio possono rispecchiare concetti nella lingua dell'host e causare involontariamente scontri.

Come affronteresti questo? Abbreviare? ( op ) Misspell? ( klass ) Qualcos'altro? ( operator_ )

    
posta Jon Purdy 03.01.2011 - 18:51
fonte

9 risposte

21
  1. Accetta che potresti dover apportare piccole modifiche alla convenzione di denominazione, ad esempio aggiungendo le maiuscole. È meglio accettarlo il prima possibile in modo che tutto il codice successivo sia coerente.

  2. Considera essere più specifico. Le parole chiave tendono ad essere piuttosto ampie, pertanto il restringimento di class fino a demonstrationClass non solo risolve i problemi, ma aumenta anche la leggibilità.

risposta data 03.01.2011 - 19:43
fonte
10

Non è qualcosa che ho incontrato, ma se mi trovassi in una situazione del genere, proverei a risolverlo con le seguenti opzioni, nell'ordine.

  1. Prova a trovare un sinonimo.
  2. (in particolare per le variabili) prova a trovare un prefisso o postfix
  3. (specialmente per le classi) cambia la prima lettera in maiuscolo e dimentica la regola di codifica che i nomi non dovrebbero differire solo nel caso. Questa opzione, probabilmente userei solo se il conflitto è con una parola chiave.
  4. Utilizza un'abbreviazione.
risposta data 03.01.2011 - 19:10
fonte
6

La lingua vince; non puoi superare in astuzia il compilatore (ignorando abomini come il PL / 1% diIF IF = THEN THEN THEN = ELSE ELSE ELSE = IF END, ma PL / 1 non ti costringerebbe a fare la domanda in primo luogo). Fondamentalmente, devi seguire le regole della lingua e devi trovare un'alternativa alle parole chiave della lingua per uso personale o trovare una lingua alternativa.

Quindi, tranne in circostanze molto insolite, ti adatti alla lingua, non viceversa.

    
risposta data 03.01.2011 - 21:53
fonte
5

Invece di abbreviare il modo di allungare? Se stai implementando un costrutto di classe in un linguaggio Foo, che ne dici di usare FooClass e foo_class? (Modulo qualunque siano le tue preferenze di custodia).

    
risposta data 03.01.2011 - 21:01
fonte
5

Alcune delle abbreviazioni che ho usato per class , in ordine di frequenza:

  • cls
  • clss
  • clazz
  • theClass
  • aClass

Se conosco quale classe rappresenta l'istanza Class , potrei includerla nel nome della variabile:

  • stringClass = Class.forName("java.lang.String");
risposta data 03.01.2011 - 23:18
fonte
4

In C e C ++, le parole chiave sono tutte minuscole e la lingua fa distinzione tra maiuscole e minuscole, quindi premi il tasto Maiuscole di tanto in tanto e molti problemi scompaiono.

In Modula 2, le parole chiave sono tutte maiuscole, ma fintanto che i tuoi identificatori hanno alcune lettere minuscole la differenza è ovvia e gli scontri sono impossibili.

Inoltre, assolutamente le convenzioni di denominazione devono in qualche misura riflettere le normali convenzioni del linguaggio che stai usando, quindi scriverò sicuramente "myClass" in Java dove probabilmente scriverei "My_Class" in C ++.

Fondamentalmente, non stai solo scrivendo per il compilatore, ma ciò che le persone trovano leggibile dipende in una certa misura dal contesto e dalle relative aspettative.

    
risposta data 03.01.2011 - 19:25
fonte
3

Spesso non mi imbatto in questo, ma quando lo faccio tende ad essere un non-problema perché uso Delphi e ti permette di aggirare questo problema anteponendo un & all'identificatore. Quindi "class" non è un identificatore valido, ma "& class" è.

    
risposta data 05.01.2011 - 02:21
fonte
2

Aggiungerei una sorta di namespace al nome della variabile. Ad esempio, supponiamo che tu abbia un modulo chiamato user, quindi modificherei l'operatore del nome variabile in qualcosa di simile a user_operator o userOperator.

    
risposta data 03.01.2011 - 18:57
fonte
2

modifica o modifica la mia convenzione di denominazione

    
risposta data 03.01.2011 - 20:40
fonte

Leggi altre domande sui tag