An Introduction

By Niekfct on Saturday 15 November 2014 12:32 - Comments (8)
Category: -, Views: 3.346

The look and feel of an application can be a deciding factor for whether it will become a giant success, or will doom to failure. This series of blogs however will be about a different kind of design. As a software engineer, you (perhaps should) strive to create beautiful apps that not only look good for users, but more importantly, gives fellow developers a warm feeling when working with or after you on the project. Every now and then I come across a project or library which handles stuff so delicately and simple, making my hands itch to start working with it.

The architecture is the foundation of your application by determining how you structure your application in a neat way, whether you can easily add features to your app, and whether you can easily take out components to swap them for others. Moreover, you increase understandability and above all testability of your application - two major and possibly underestimated points when it comes to software development.

Popular frameworks such as Laravel for PHP provide a base foundation for building web applications by requiring the developers to strictly adhere to conventions. You are provided with some application bootstrapping, and a folder structure to start developing in. With the possibility to create absolute horrible things using PHP, it is crucial to use such a framework.

In Android however, you are almost on your own. The Getting Started guide just shows you how to create Activities, layouts, and some other technical stuff. The vast majority of examples show how to create one Activity per application screen, and basically stuff all your layout and data handling in that Activity. More recently, Fragments have been introduced to allegedly provide modular, reusable parts you can stuff in your application, all with their own life cycle and what not.

I have been developing for the Android framework and in general for the past few years, and struggling with the above ever since. In every project I'd encounter something new I didn't like, starting the next project with a different mindset on how to structure the application. The result, obviously, is that none of my last projects ever look the same (are they ever?).
For the past 6 months I have started developing web applications in PHP, first using CakePHP (Oh, the horror), and later Laravel. These frameworks have given me insight in how to structure applications, and learn to appreciate tools that help you do this.

In the following blogs I intend to share my (current, ever changing) vision on how to design your application architecture, and to discuss how basic Android seems to fail at this. The topics I intend to cover include:
  • How my new applications are structured;
  • A step back: How I used to build apps (and I think many others still do);
  • Reflection on this step back;
  • Explaining the new structure:
    • In comparison;
    • The libraries used;
    • The advantages;
  • Testing the application;
  • General tips and tricks for creating both visually and internally beautiful applications.
These follow-ups will probably be supported by some code snippets, diagrams and example projects on Github, so it should be a bit less boring than this one :)

This blog assumes you have at least some experience in developing Android applications or software engineering in general, and some knowledge about design patterns such as dependency injection, and the Model-View-Presenter pattern. Anything IDE or build related will be done using Android Studio and Gradle - it is obvious that this is the future of developing for Android. It also is also highly inspired by the people at Square, especially their rich set of excellent libraries, and their recent blogs in this area (spoiler alert!). Did you find a mistake somewhere, think I'm forgetting something, or do you think I'm totally screwing something up? Let me know! We're all here to learn something :)


Hoi Tweakers :9
Dit is mijn eerste weblog over dit onderwerp, en ik ben benieuwd of er Tweakers zijn die ook met dit bijltje hakken / gehakt hebben. Deze blog wordt ook voor een iets internationaler publiek beschikbaar gemaakt, wat het Engels verklaart. Het lijkt me leuk om deze posts ook aan een Nederlandse community voor te leggen, mits hier natuurlijk interesse voor is :)

Poll: Interessant?
Ja, ik ontwikkel ook voor Android
Ja, ik ontwikkel ook software
Ja, ik ben een Android beginner
Ja, gewoon :)
Misschien
Nee, niet mijn interesse
Nee, te geavanceerd
Nee, omdat...
Tussenstand:
http://poll.dezeserver.nl/results.cgi?pid=392841&layout=6&sort=org
Ook een poll maken? Klik hier