
On 1/22/07, Noah Roberts <roberts.noah@gmail.com> wrote:
Yes, it does sound familiar but it is just a common way of writing bad code. In any given project your base unit should be the same for any given function. Anything that accepts a length should accept either feet or meters, and a mix of both in your project is a Really Bad Thing.
And how can you enforce this? Take for instance a database that holds radar characteristics. The units that pilots use are always feet (for altitude) and nautical miles (for distances). Ground elevation data is stored as DTED files which are in meters, where the distance between elevation postings is in latitude/longitude. Now convert an AGL (Above Ground Level) altitude to an MSL (Mean Sea Level) altitude. Wait...that requires adding feet (the altitude of the aircraft is always given in feet) to the ground elevation at that particular latitude/longitude (but wait, pilots measure distance in nautical miles, plus the ground elevation is given in meters!). These are all just errors waiting to happen that a good units library will catch at compile-time.
Really the only thing this static unit library provides is a way to enforce a policy of base units. This is a good thing but is rather incomplete without a way to interact with the user, who will want his/her display and entry in different unit formats.
I don't see how this library prevents a program from doing just that, albeit from a limited set of different units, but surely it had to be limited anyways to give them a set of options to choose from? --Michael Fawcett