2015-06-18 15 views
6

Sono abbastanza nuovo per lo sviluppo di Android, quindi ho alcune domande sulla progettazione del codice/progetto Android.Organizzazione pacchetto Android

  1. Le persone generalmente suddividono le chiamate API in classi/classi separate? O li chiami all'interno dell'oggetto stesso?
  2. I pacchetti sono solo sottodirectory? Da quello che ho capito, sono usati solo a beneficio del programmatore come strumento organizzativo.

So che queste domande sono in qualche modo soggettive, ma sono interessato a come altri sviluppatori organizzano il loro codice. Grazie!

risposta

5

Organizzazione pacchetti annunci - Sviluppo applicazioni per Android da circa due anni e ho organizzato una fonte simile a quella scritta da Andrea Cinesi. Ma questa settimana ho iniziato a pensare se sarebbe più opportuno pacchetto era come modulo applicativo, ad esempio:

com.example.android 
.car 
    CarActivity 
    CarListFragment 
    CarDetailFragment 
    CarListAdapter 
    ... 
.route 
    RouteActivity 
    RouteListFragment 
    RouteDetailFragment 
    RouteListAdapter 
    ... 
.utils 
.services 
etc. 

Non ho ancora Thinkin due volte quello che tutti Shoul essere in (entità di dati ad esempio) "modulo". Ma perché sto pensando a questo cambiamento? Perché in progetti di medie o grandi dimensioni ci sono molte attività/frammenti/ecc. In un unico pacchetto - e questo mi confonde - lo vedo soprattutto per i progetti più grandi acquisiti da altri sviluppatori.

E un altro vantaggio può essere suddiviso in pacchetti di moduli: pacchetto java: visibilità privata dei metodi.

Non ho ancora deciso se utilizzare questa o quella variante, ma penso che per i progetti più piccoli non interessa e per progetti di media o grande può essere preferibile pacchetti di opzioni come moduli.

1

Mi piace avere file separati per ogni classe nei miei progetti Android, con l'unica eccezione AsyncTasks. Avere questo numero di file java significa che devi avere più pacchetti del pacchetto base. Ho finito con un pacchetto per ogni tipo di classe principale. Ogni classe è nominata e termina con il suo tipo.

com.example

attività

Contiene tutte le attività. Le classi sono tutte denominate con Attività alla fine. In questo modo, puoi immediatamente sapere di cosa si tratta leggendo il codice Java che non ha il nome completo del pacchetto.

adattatori

Contiene tutti gli adattatori.

autenticatore

Contiene tutte le classi relative alla firma di un utente in. Creo un account locale e avere tutte le classi legate insieme è molto utile.

dati

Contiene tutte le classi legate alla gestione dei dati, come ContentProvider e SQLiteHelper.

data.migrations

Contiene tutte le mie migrazioni SQLite. Ho creato una classe per le migrazioni, ne ho letto qui e le ho inserite tutte in questo pacchetto.

frammenti

Contiene tutti i frammenti.

helpers

Contiene classi di supporto. Una classe helper è un posto dove inserire il codice che viene utilizzato in più di un posto. Ho un DateHelper per esempio. La maggior parte dei metodi sono statici.

interfacce

Contiene tutte le interfacce.

modelli

Contiene tutti i modelli locali. Durante la sincronizzazione da un'API HTTP analizzo il JSON in questi oggetti Java usando Jackson. Ho anche inserito le righe del cursore in questi modelli.

preferenze

Contiene tutte le classi per le preferenze personalizzate. Durante la creazione delle preferenze ho richiesto un PreferenceDialog personalizzato e una PreferenceCategory personalizzata. Vivono qui.

sincronizzazione

Contiene tutte le classi relative alla sincronizzazione. Io uso un SyncAdapter per estrarre i dati da un'API HTTP. Oltre a SyncAdapter è richiesto un SyncService, quindi ho creato un pacchetto.