Functions should be named according to one of the following schemes: verb_noun verb_noun_with_noun noun_attribute get_noun_attribute -- when the 'noun_attribute' name conflicts with a type set_noun_attribute noun_from_noun -- convert from one type to another (avoid noun_to_noun) Prefixes are mandatory for exported functions, macros, enums, globals and types. fz for common code pdf, xps, etc., for interpreter specific code Prefixes are optional (but encouraged) for private functions and types. Avoid using 'get' as this is a meaningless and redundant filler word. These words are reserved for reference counting schemes: new, find, load, open, keep -- return objects that you are responsible for freeing. drop -- relinquish ownership of the object passed in. When searching for an object or value, the name used depends on whether returning the value is passing ownership: lookup -- return a value or borrowed pointer find -- return an object that the caller is responsible for freeing