29.2 Objects and Free-Functions

OEChem is an object-oriented library. However, we have taken a design philosophy that objects are primarily data containers with data access member functions. Most powerful data analysis and manipulation routines in OEChem are implemented as free functions rather than member functions. We have used namespaces to keep this decision from cluttering the global namespace. This decision to avoid the "kitchen-sink" model allows simple light-weight objects which are relatively easy to derive from and implement. A user can take advantage of the parts of the api they need without using objects with enormous and confusing APIs.