Convenzione di denominazione: campo che inizia con "m" o "s"

8

Ho visto molto codice (ad esempio un codice sorgente Android) dove il nome del campo inizia con m mentre i campi statici iniziano con s

Esempio (tratto dalla sorgente della classe Visualizza Android):

private SparseArray<Object> mKeyedTags;
private static int sNextAccessibilityViewId;

Mi chiedevo cosa significasse m e s per ... forse è m mutabile e s statico?

    
posta Noya 26.11.2012 - 11:20
fonte

2 risposte

18

m è in genere per un membro pubblico (vedere questa risposta per convenzioni comuni sul codice C Perché utilizzare i prefissi sulle variabili membro nelle classi C ++ ).

Non ho mai visto s prima, ma in base a tale risposta:

  • m for members
  • c for constants/readonlys
  • p for pointer (and pp for pointer to pointer)
  • v for volatile
  • s for static
  • i for indexes and iterators
  • e for events

Hai letto qualche standard pubblicato per il progetto in cui hai visto quel codice?

Uno dei più noti sistemi di notazione di prefissi è Notazione ungherese .

C'è un eccellente post sul blog di Joel Spolsky sui prefissi: Rendere errato il codice errato

    
risposta data 26.11.2012 - 11:27
fonte
6

Si chiama notazione ungherese e fa schifo. Fai qualche ricerca su di esso, è in realtà un concetto frainteso.

È nato con un buon intento, indica variabili che possono causare danni, come l'input direttamente dall'utente in un modulo HTML (assicurati di rimuovere HTML prima di archiviarlo in DB, per esempio).

var unsafeComment = $('.input').val();
save(unsafeComment);//looks wrong
//strip out html then save 

Il m è per membro e s per statico .

    
risposta data 26.11.2012 - 11:30
fonte

Leggi altre domande sui tag