Writing Scientific Software: A Guide To Good Style