A Note on Documentation

Code documentation, it can be tedious to write and maintain, what’s a developer to do?

I was asked for my advice on documentation today and realised just how much my approach had changed over the years. In my eager early days of development I thought the mark of a true professional was someone who in addition to taking the time to write quality code, also took the time to document it beautifully. I documented classes and methods religiously and sprinkled my code with helpful inline comments liberally. These days I take a very different approach.
Continue reading

DevBytes: Intro to ActionBarCompat Support Library

Video

Google has extended Action Bar support for older devices (as early as Android 2.1) via support library 18.

This video provides an overview of how to update your existing app to use the new Action Bar apis and take full advantage of the Action Bar on older devices.

Those of you who have been using the 3rd party library ActionBarSherlock to date will notice that a similar approach has been used by google.

API Design for iOS and OSX by Matt Gemmell

API Design for iOS and OSX

I recently read a brilliant article about API Design by Matt Gemmell. The suggestions Matt makes seem so straight-forward that it is easy to pass them off as common sense.

However, many projects are not developed using these common sense suggestions. Clearly, this is a sign that there is much to be gained from formalising how APIs are written. Matt has also created a Cheat Sheet summarising his recommendations.

A worthwhile read. Thank you Matt.

Java Assertions

Overview

Java assertions are wonderful things which help define the desired behaviour of an application. For example the following assertion states that the variable number should be non-negative:

 assert ( number >= 0) 

Unlike exceptions, which can be caught and handled gracefully, an assertion failure indicates that something has gone terribly wrong within the application and causes it to exit. Thus, in the above example, if assertions are switched on and number is equal to -5 the application will crash. Continue reading

Perfect Design?

As time goes on in the life of a software project, the codebase grows and complexity increases.  This along with hacky bug fixes, tacked on functionality and quick improvements can turn a project into a large multi-functional, inter-meshed mess.

Needles to say this makes feature tracking, versioning, bug isolation and maintenance difficult and limits code reuse potential. While it is best if planning and good design practices protect a project from growing into such a state, the need for rapid development is sometimes more pressing than the need to get design details perfect. Continue reading