Erlang atoms are awesome. Use them.
Counter-example:
Existing = get_bucket_type(BucketType, undefined, false),What do undefined and false mean on the other end? Who knows?
Here's the function head for get_bucket_type/3:
get_bucket_type(BucketType, Default, RequireActive) ->So that parameter means only return a bucket type if it has been activated. Why not name the atoms can_be_inactive and must_be_active or similar?
It turns out that undefined is the default value if no bucket type is found. I'd prefer it be in the 3rd position to match proplists behavior, but I'd really rather that be hidden from the caller by making get_bucket_type/2 a wrapper for get_bucket_type/3.