They are difficult to maintain because whenever the contained object is changed, each container-like class which holds such objects must change at the same time. The container-like class should provide the methods necessary for efficient iteration over the contents of the container, so that each user does not need to discern the correct rules for iteration. One good example of such a need is when several data members must be modified simultaneously, to assure that an object remains in a consistent state. Adherence to this guideline will minimize the disruption that occurs when interfaces change, or when package dependencies change, because librarians can only fix code that is in the repository. It is not possible for them to fix code that is in private directories.
Suggestions Always consider portability when writing code.