Recognizing design limitations
In the case of our data cleanup, the simplistic removal of stray characters may not be sufficient. When working with the geolocation data, we may have a wide variety of input formats that include simple degrees (37.549016197
), degrees and minutes (37° 32.94097′
), and degrees-minutes-seconds (37° 32′ 56.46″
). Of course, there can be even more subtle cleaning problems: some devices will create an output with the Unicode U+00BA character, º
, instead of the similar-looking degree character, °
, which is U+00B0.
For this reason, it is often necessary to provide a separate cleansing function that's bundled in with the conversion function. This function will handle the more sophisticated conversions required by inputs that are as wildly inconsistent in format as latitudes and longitudes.
How can we implement this? We have a number of choices. Simple higher-order functions are a good choice. A decorator, on the other hand, doesn't work out terribly well. We'll look at...