androides y mazmorras. part i (dungeons & robots)

43
Androides y mazmorras. Part I (dungeons & robots) Jorge Juan Barroso Carmona [email protected] @flipper83 +JorgeJBarroso Android expert

Upload: jorge-barroso

Post on 06-Aug-2015

174 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: Androides y Mazmorras. Part I (dungeons & robots)

Androides y mazmorras. Part I(dungeons & robots)Jorge Juan Barroso Carmona

[email protected]@flipper83+JorgeJBarroso

Android expert

Page 2: Androides y Mazmorras. Part I (dungeons & robots)

We embark on every project with a commitment to create something elegant, enduring and effective. That is our heartbeat.

Our approach is uniquely simple and honest, we are a small dedicated software studio, delivering outstanding work.

Karumi is the Rock Solid code software development studio.

Page 3: Androides y Mazmorras. Part I (dungeons & robots)
Page 4: Androides y Mazmorras. Part I (dungeons & robots)
Page 5: Androides y Mazmorras. Part I (dungeons & robots)
Page 6: Androides y Mazmorras. Part I (dungeons & robots)

Why go down the stairs

Page 7: Androides y Mazmorras. Part I (dungeons & robots)

Adam Tornhill

“When you see that I committed a bunch of buggy spaghetti last week, you know it’s because I’m a bad programmer,

irresponsible and perhaps even a tad stupid. When you, on the other hand, deliver scrappy code (yes, I know - it’s a

hypothetical scenario) you know it’s because you were close to a deadline, had to save the project or just intended it to be a

prototype.”

Page 8: Androides y Mazmorras. Part I (dungeons & robots)

Refactor is not destroy all your code

Page 9: Androides y Mazmorras. Part I (dungeons & robots)

Refactor is not an Arcade Fire album.

Page 10: Androides y Mazmorras. Part I (dungeons & robots)

Refactor is change the code and works on the same way

Page 11: Androides y Mazmorras. Part I (dungeons & robots)

Timing is part of the development process

Page 12: Androides y Mazmorras. Part I (dungeons & robots)

Programming is problem-solving. And human problem-solving requires a certain degree of experimentation

Page 13: Androides y Mazmorras. Part I (dungeons & robots)

Architecture decay and code entropy

Page 14: Androides y Mazmorras. Part I (dungeons & robots)

Ignorance and bad developers

Page 15: Androides y Mazmorras. Part I (dungeons & robots)

Pedro Ureña

“La deuda técnica es como tener una tarjeta de crédito. Tienes que devolver el dinero y los intereses. Si tiras siempre de la

tarjeta de crédito, no vas a poder pagar los intereses y estarás en bancarrota.”

Page 16: Androides y Mazmorras. Part I (dungeons & robots)

Explore the dungeon

Page 17: Androides y Mazmorras. Part I (dungeons & robots)

“I wrote that about aesthetics in discussing when you apply refactorings. To some extent, the situations I describe in the refactoring guidelines are fairly vague notions of aesthetics.

But I try to provide more guidance than just saying, "Refactor when the code looks ugly." I say, for instance, that duplicated code is a bad smell. I say that long methods are a bad smell.

Big classes are a bad smell. ”

Martin Fowler

Page 18: Androides y Mazmorras. Part I (dungeons & robots)

Run away from intuition

Page 19: Androides y Mazmorras. Part I (dungeons & robots)

Run away from trendy styles

Page 20: Androides y Mazmorras. Part I (dungeons & robots)

Run away from me

Page 21: Androides y Mazmorras. Part I (dungeons & robots)

Take decisions based on data

Page 22: Androides y Mazmorras. Part I (dungeons & robots)

Searching for hotspots

Page 23: Androides y Mazmorras. Part I (dungeons & robots)

number-of-commits,79 number-of-entities,2601 number-of-entities-changed,4582 number-of-authors,27

App Google IO 2014

Code-maat

Page 24: Androides y Mazmorras. Part I (dungeons & robots)

Class sizes. Less size ~= Less

responsibilities

Page 25: Androides y Mazmorras. Part I (dungeons & robots)

File blank comment code ./android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java 203 175 1185 ./android/src/main/java/com/google/samples/apps/iosched/ui/SessionDetailActivity.java 178 111 995 ./third_party/disklrucache/src/test/java/com/jakewharton/disklrucache/DiskLruCacheTest.java 113 37 881 ./android/src/main/java/com/google/samples/apps/iosched/ui/SessionsFragment.java 147 106 875 ./android/src/main/java/com/google/samples/apps/iosched/provider/ScheduleProvider.java 78 128 842 ./android/src/main/java/com/google/samples/apps/iosched/ui/SessionLivestreamActivity.java 124 125 808 ./android/src/main/java/com/google/samples/apps/iosched/ui/MapFragment.java 181 166 635 ./third_party/disklrucache/src/main/java/com/jakewharton/disklrucache/DiskLruCache.java 92 215 623 ./android/src/main/java/com/google/samples/apps/iosched/provider/ScheduleContract.java 145 277 590 ./android/src/main/assets/licenses.html 85 12 583

Cloc

Page 26: Androides y Mazmorras. Part I (dungeons & robots)

Watch out for classes that change frequently, it might be possible that a lot of people

are working on  it or it has too much responsibility

Page 27: Androides y Mazmorras. Part I (dungeons & robots)

File n-revs entity,n-revs android/build.gradle, 14 doc/BUILDING.md, 13 README.md, 9 .travis.yml 9 Wearable/build.gradle, 6 build.gradle,6 android/src/com/google/android/apps/iosched/util/ImageWorker.java, 5 gradle/wrapper/gradle-wrapper.properties, 5 android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java, 5 android/src/main/res/values-it/strings.xml, 5

Page 28: Androides y Mazmorras. Part I (dungeons & robots)

Code complexity

Page 29: Androides y Mazmorras. Part I (dungeons & robots)

File num-lines total media max BaseActivity.java 1360 3332 2.45 8 SessionDetailActivity.java 1106 2898 2.62 9 MapInfoWindowAdapter.java 142 221 1.56 5

Page 30: Androides y Mazmorras. Part I (dungeons & robots)

Temporal coupling

Search getInstances()

Page 31: Androides y Mazmorras. Part I (dungeons & robots)

File 1 File2 % couple average-rev SocialStreamFragment.java ImageFetcher.java 100 2 SocialStreamFragment.java ImageCache.java 100 2 ImageCache.java ImageFetcher.java 100 2

Page 32: Androides y Mazmorras. Part I (dungeons & robots)

Code paths

Page 33: Androides y Mazmorras. Part I (dungeons & robots)

Duplicated code

DRY

Page 34: Androides y Mazmorras. Part I (dungeons & robots)

Be careful with eternal changes

Page 35: Androides y Mazmorras. Part I (dungeons & robots)

The dungeon master

Page 36: Androides y Mazmorras. Part I (dungeons & robots)

Listens to everybody before making decisions

Echo effect

Page 37: Androides y Mazmorras. Part I (dungeons & robots)

Adjust the team and the communication process for

the refactor

Page 38: Androides y Mazmorras. Part I (dungeons & robots)

Ask for opinions from outside (external or other teams)

Page 39: Androides y Mazmorras. Part I (dungeons & robots)

Ask for opinions from outside (external or other teams)

Page 40: Androides y Mazmorras. Part I (dungeons & robots)

“If you point of me, remember you have 3 fingers pointing at you”

Pedro Vicente Gómez

Page 41: Androides y Mazmorras. Part I (dungeons & robots)

BibliographyThey’re the cracks!

Your Code as a crime scene. Adam TornhillWorking Effectively with legacy code. Michael FeathersRefactoring: Improving the Design of Existing Code. Martin Fowler.Workflows of Refactoring. Martin Fowler. OOP2014.Refactorizar a patrones. Xavi Gost.Refactoring: Where Do I start?. J. B. Rainsberger.

Page 42: Androides y Mazmorras. Part I (dungeons & robots)

Find meI am very social!

[email protected]@flipper83+JorgeJBarroso

Questions?

Page 43: Androides y Mazmorras. Part I (dungeons & robots)