# Abstract, Extract
### How abstractions and libraries can help you untie that big ball of twine that is your sorry excuse of a source code *
* \* Come up with a better title before Wednesday
# Daniel Saidi
### iOS Lead @ BookBeat
# Windows Mobile 2005
### Before it was cool
# BookBeat
### A startup story
## Competitors
* Audible
* Storytel
* Nextory
* ...and many others
# Keeping it together
### How do you keep your code base sane?
# But what if you fail?
### How do you know if your code went bad?
# Code-smell!
### (it actually does smell)
# Raise of hands
### Favorite code-smells?
# Duplicated code
### e.g. validation, formatting, business logic
# Long functions
### Hard to test, cyclomatic complexity
# Complicated code
### If your code needs comments, you know
# Large classes
### Does a lot of stuff...that it shouldn't
# Spaghetti code
### No red thread, no obvious design
# Hard coupling
### A depends on B which depends on...
# Bad habits
### Unit tests disabled, no version control etc.
# So, BookBeat?
### How did the code-base look after a year?
# Thank you!
Daniel Saidi ยท [@danielsaidi](https://twitter.com/danielsaidi)