2010-09-01 11 views
6

Mi scuso se questo finisce per essere una domanda stupida, ma mi stavo chiedendo il motivo per cui questo è fatto il punto 9 della Esercizio Notepad 1 tutorial (http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html) ...Android Notepad Esercizio 1 tutorial e Menu.FIRST

public static final int INSERT_ID = Menu.FIRST; 

... e quindi INSERT_ID viene utilizzato ovunque, invece di utilizzare solo Menu.FIRST direttamente invece ovunque?

Stavo pensando che non voglio creare nuove variabili se non devo, specialmente quando sono già statico finale.

È costoso creare INSERT_ID?

+3

non ci sono domande stupide! – Key

risposta

3

Perché se si utilizza Menu.First dappertutto, quindi si è deciso di spostare tale opzione nel menu in modo che non fosse più il primo elemento necessario aggiornare tutti i riferimenti. In questo modo hai solo bisogno di aggiornarlo in un posto e il più sensibilmente chiamato INSERT_ID rifletterà le modifiche che hai apportato ovunque.

Per quanto riguarda la performance hit della creazione di nuove variabili: Sì, la creazione della variabile utilizzerà una quantità (non significativa) di tempo CPU, e sì la memorizzazione della variabile consumerà una quantità di memoria (insignificante), ma dovresti non mettere mai le prestazioni prima della leggibilità del codice fino a quando non si è determinato che si è verificato un collo di bottiglia - ci si troverebbe in un ambiente molto ristretto perché ciò sia vicino a un problema.

Infine, molti compilatori integreranno comunque i riferimenti a INSERT_ID. Ciò significa che tutti i riferimenti a INSERT_ID verranno sostituiti al momento della compilazione con il valore in Menu.First e la variabile non verrà mai creata. Non ne so abbastanza del compilatore Android per dirlo con certezza in un modo o nell'altro, ma sarei sorpreso se non lo facesse.

+0

Bene, provenendo dallo sviluppo di Java Swing, non mi sono dovuto preoccupare tanto delle risorse di sistema, ecc., E ho bisogno dello sviluppo di Android (basato sulla visione dei video di Google I/O 2010). In realtà ero a conoscenza dei punti che hai menzionato (anche se un buon editor di codice può cercare/sostituire Menu.FIRST con qualunque nuovo valore tu voglia abbastanza facilmente), e normalmente sono DAVVERO grande sulla leggibilità del codice, ma come ho detto , pensavo che per lo sviluppo di Android, meno variabili ho definito/istanziato, meglio è. Grazie per la risposta. –

+0

Capisco cosa dice @Martin Harris, ma non capisco perché dovrei usare Menu.FIRST. Impossibile INSERT_ID essere dichiarato come INSERT_ID = 1 ;? – prostynick

+1

@prostynick Perché è possibile che una versione più recente del framework Android cambi l'implementazione del menu sottostante in modo che Menu.FIRST diventi 0, o -1 o 456. Questo probabilmente non accadrà mai perché troppe app saranno difficili codificato su 1, ma l'uso di const ti dà leggibilità (INSERT_ID è il primo elemento nel menu, non "1" che potrebbe essere il primo o il secondo elemento a seconda di come indicizzi) e la compatibilità futura priva di rischi a costo zero - quindi perché non usarlo? –