Devo utilizzare la convenzione di denominazione degli utenti e dei nomi in Android? [chiuso]

6

Il codice sorgente di Android e molte app e librerie open source Android utilizzano il prefisso m per i campi dei membri e il prefisso s per i campi dei membri statici:

private static boolean sStarted;
private long mTimestamp;

Personalmente non mi piace, perché sembra brutto ed è ridondante - il mio IDE utilizza già colori e formattazione diversi per variabili locali, membri e membri statici.

Cosa c'è di più vicino alla verità?

  1. È una buona pratica.
  2. È una cattiva pratica, ma dovresti comunque usarla per essere coerente con la maggior parte del codice Android.
  3. È una cattiva pratica e non dovresti usarla.
posta fhucho 06.09.2013 - 22:11
fonte

2 risposte

7

La convenzione di denominazione che hai descritto assomiglia molto (se non alla stessa cosa) alla notazione ungherese del sistema. Ci sono state molte discussioni a riguardo qui ( Lottando per non usare la notazione ungherese ), e ovviamente è ridondante.

Quindi la risposta alla tua prima domanda, No, non è una buona pratica.

La seconda domanda è un po 'più difficile. Se lavori su una base di codice esistente con quella convenzione, è meglio continuare a usarla.

Personalmente non userei questa convenzione quando creo qualcosa da zero, anche se uso le librerie con quella stessa convenzione. Quella pratica è veramente ridondante e non ne guadagni nulla tenendo conto delle capacità di IDE. Preferirei invece nomi coerenti e accurati nella mia applicazione, che lo renderebbero abbastanza chiaro.

    
risposta data 06.09.2013 - 22:48
fonte
3

Questa è una domanda vecchia, ma sto rispondendo per non essere d'accordo con la risposta accettata (e solo).

Sono stato un programmatore Java per circa quindici anni, e lo sto facendo professionalmente e intensamente per circa tre anni. Inizialmente ho resistito alla convenzione mMember per tutti i motivi astratti comunemente citati. Ma più ho fissato il codice Java, più questa convenzione è cresciuta su di me. Ho iniziato a usarlo da solo pochi mesi fa.

Per prima cosa, è non completamente ridondante. Anche con l'evidenziazione della sintassi moderna, la convenzione rende più facile riconoscere immediatamente che un identificatore è un campo membro. Soprattutto a 3 A.M.

E molti degli argomenti contro la notazione ungherese sono in realtà argomenti contro la notazione ungherese Systems , in cui le verruche identificano il tipo della variabile. Questo è davvero ridondante in un linguaggio strongmente tipizzato come Java. Ma c'è un buon argomento da fare per Application ungherese, in cui le verruche codificano l'ambito e l'utilizzo. Su Google questi due termini verranno visualizzati diversi articoli.

Il tuo secondo punto è il più vicino alla verità. Direi che non è affatto una cattiva pratica, per le ragioni sopra esposte. Ma penso che possiamo lasciare da parte questo argomento e dire che dovresti farlo solo sulla base della convenzione. Le ragioni di questo sono sia pratiche che sociali.

La comunità Java ha convenzioni di denominazione molto forti. Diventano radicati al punto in cui il codice che non li segue diventa difficile da leggere. Se non utilizzi la convenzione mMember , puoi scommettere che un programmatore di manutenzione che viene dopo che ha intenzione di refactoring tutti i tuoi nomi di identificatore.

E l'aspetto sociale è che non rispettare le convenzioni di denominazione Java immediatamente ti segnala ai tuoi pari come non un vero programmatore Java . "Fai attenzione a questo ragazzo, probabilmente non sa nemmeno che cos'è un modello di memoria." (E di solito hanno ragione ...)

    
risposta data 16.02.2015 - 05:37
fonte

Leggi altre domande sui tag