The Engel & Völkers Property Search for mobile devices was the first software which was developed by an external provider and then insourced to the Engel & Völkers Technology GmbH. Although it was developed as native iOS application at the beginning, a port to Android started in March 2017 in order to reach more potential customers.
When the project was taken over a year later, technologies had already advanced. We analyzed the code base and though the application was runnable, we noticed a list of shortcomings, for example:
- Bugs that lead to crashes
- No functional unit tests
- No clear architecture and tightly coupled components
- Bad separation of concerns
Additionally, as the project was a simple copy of its iOS counterpart, it contained workflows and the look and feel of iOS application which might be uncommon to Android users. In short, there was a lot of room for improvement.
In the following article we would like to quickly present some concepts and libraries we used to refactor the code base with the goal to improve the maintainability and extensibility of the app in the future.
Our first goal was to prepare the app for a release to the Google Play Store. That means that all major bugs had to be fixed, new contact forms had to be added and adaptations concerning the European General Data Protection Regulation (GDPR) and legal requirements had to be made. Furthermore, the user interface had to be updated to follow the Engel & Völkers corporate identity guidelines. After version 1.0 hit the Play Store, bigger refactorings were tackled using the following tools.
Kotlin is a modern statically typed programming language which has been developed since 2011 and runs on the Java Virtual Machine (JVM). Since Google announced its official support for Android in 2017, Kotlin’s popularity among the Android Development community skyrocketed because of its characteristics and features like Null Safety, data classes or Extension Functions. It is a very concise language that eliminates a lot of boilerplate code while providing a very good readability.