androides y mazmorras. part i (dungeons & robots)
TRANSCRIPT
![Page 1: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/1.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/2.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/3.jpg)
![Page 4: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/4.jpg)
![Page 5: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/5.jpg)
![Page 6: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/6.jpg)
Why go down the stairs
![Page 7: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/7.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/8.jpg)
Refactor is not destroy all your code
![Page 9: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/9.jpg)
Refactor is not an Arcade Fire album.
![Page 10: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/10.jpg)
Refactor is change the code and works on the same way
![Page 11: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/11.jpg)
Timing is part of the development process
![Page 12: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/12.jpg)
Programming is problem-solving. And human problem-solving requires a certain degree of experimentation
![Page 13: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/13.jpg)
Architecture decay and code entropy
![Page 14: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/14.jpg)
Ignorance and bad developers
![Page 15: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/15.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/16.jpg)
Explore the dungeon
![Page 17: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/17.jpg)
“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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/18.jpg)
Run away from intuition
![Page 19: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/19.jpg)
Run away from trendy styles
![Page 20: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/20.jpg)
Run away from me
![Page 21: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/21.jpg)
Take decisions based on data
![Page 22: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/22.jpg)
Searching for hotspots
![Page 23: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/23.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/24.jpg)
Class sizes. Less size ~= Less
responsibilities
![Page 25: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/25.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/26.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/27.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/28.jpg)
Code complexity
![Page 29: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/29.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/30.jpg)
Temporal coupling
Search getInstances()
![Page 31: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/31.jpg)
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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/32.jpg)
Code paths
![Page 33: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/33.jpg)
Duplicated code
DRY
![Page 34: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/34.jpg)
Be careful with eternal changes
![Page 35: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/35.jpg)
The dungeon master
![Page 36: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/36.jpg)
Listens to everybody before making decisions
Echo effect
![Page 37: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/37.jpg)
Adjust the team and the communication process for
the refactor
![Page 38: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/38.jpg)
Ask for opinions from outside (external or other teams)
![Page 39: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/39.jpg)
Ask for opinions from outside (external or other teams)
![Page 40: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/40.jpg)
“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)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/41.jpg)
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 43: Androides y Mazmorras. Part I (dungeons & robots)](https://reader033.vdocument.in/reader033/viewer/2022042716/55c292dcbb61eb522b8b47e0/html5/thumbnails/43.jpg)