3. Agenda
Definizione di Clean Code
Formattazione del codice
Clean code vs optimization
Best practices Java
Gestione delle risorse Android
Test
4. "The only way to make the deadline -- the only
way to go fast -- is to keep the code as clean as
possible at all times."
Clean code - Robert C. Martin
11. android.view.View
itmrvtFas
n Piaelg;
/..
/.
pbi vi stsotaepc(ola iRo){
ulc od eIRoNmsaeboen sot
i (sot {
f iRo)
mrvtFas| I_OTNMSAE
Piaelg = SRO_AEPC;
}es {
le
mrvtFas& ~SRO_AEPC;
Piaelg = I_OTNMSAE
}
}
pbi boeniRoNmsae){
ulc ola sotaepc(
rtr (Piaelg&SRO_AEPC)! 0
eun mrvtFasI_OTNMSAE = ;
}
12. Ottimizzazione del codice
la classe View è istanziata molte volte all'interno di ogni
activity di ogni app
ha senso ottimizzare l'occupazione di memoria
ma nel codice di una app?
15. Per evitare creazione di oggetti gli int sono molto usati
Tutte le risorse sono int nella classe R
txVe.eTx(0)
etiwstet10;
Cue b:adodcnetrsRsucsNtonEcpin
asd y nri.otn.e.eore$oFudxeto:
Srn rsuc I #x4
tig eore D 06
a adodcnetrsRsucsgtetRsucsjv:3)
t nri.otn.e.eore.eTx(eore.aa29
a adodwde.etiwstetTxVe.aa34)
t nri.igtTxVe.eTx(etiwjv:84
txVe.eTx(nee.otig10)
etiwstetItgrtSrn(0);
20. The first time you do something, you just do it.
The second time you do something similar, you
wince at the duplication, but you do the
duplicate thing anyway. The third time you do
something similar, you refactor.
Martin Fowler
23. Activity
classe base da usare per creare una interfaccia grafica
nei casi semplici contengono tutto
possono diventare molto grandi e difficili da gestire
42. Dagger
Object: possono essere singleton
Module: classi Java che creano Object
ObjectGraph: creato runtime a partire
da più moduli
43. Scope
pbi OjcGahpu(bet. mdls {
ulc betrp lsOjc.. oue)
}
Permette di creare oggetti legati a scope:
Application
Activity
Fragment
47. Pro di Dagger
alto disaccoppiamento delle classi
validazione compile time delle dipendenze
moduli di test con stub e mock
48. EventBus
permette di usare una architettura basata su eventi
usando il metodo p s vengono invocati i metodi
ot
oEet
n v n degli oggetti che si sono registrati con
rgse
eitr
simile a Otto ma non basato su annotation
gestisce anche i thread in background
49. Uso di EventBus
Gerarchia di eventi: listener su classi base
Gli eventi possono essere Parcelable
Ciclo di vita Activity/cambio di orientation
54. Test della ui
utili per creare il caso di test
aggiungendo uno wait è possibile interagire con il device
Spoon permette di eseguire i test su più device e salvare
screenshot
55. Java 8
in uscita a Marzo
lambda expression e molte altre novità
cambierà il modo di scrivere codice
56. Riferimenti
Robert C. Martin - Clean code
Martin Fowler - Refactoring: Improving the Design of
Existing Code
Simpler Android apps with Flow and Mortar
github.com/JakeWharton/butterknife
github.com/square/dagger
github.com/greenrobot/EventBus
github.com/square/fest-android
57. Thanks for your attention!
Questions?
@fabioCollini
linkedin.com/in/fabiocollini