The Selfish ClassBy: B. Foote, J. Yoder
Summary: What can be done to encourage reuse.
What can be done to encourage reuse.
Url: http://www.laputan.org/selfish/selfish.html 
Pages: 453-455
Software is a pool of potentially reusable artifacts. For these artifacts to flourish, programmers must find them appealing, so, be sure they reliably solve a useful problem in a direct and comprehensible fashion. Make them widely available.
Pages: 455-459
If it's too much trouble to reuse an artifact, programmers may not bother. Design objects that exhibit reasonable behavior with default arguments. Provide everything a programmer needs to try out these objects. Make it as easy as possible for designers to see a working example.
Pages: 459-462
Objects with complex interfaces that conceal few of their internals are hard to understand and reuse. Design objects with low surface-to-volume ratios, that is, objects with small external interfaces, or surface areas, that encapsulate a large volume of internal complexity.
Pages: 462-464
Complex interfaces can overwhelm novices. Design artifacts to allow users to start with a simple subset of their capabilities and gradually master more complex capabilities as they go along.
Pages: 464-466
You want an artifact to adapt to requirements while maintaining its integrity. Use translators, subclasses, and/or wrappers to supply new states or behavior while leaving the original artifact intact.
Pages: 466-467
Even a well-designed software artifact will not survive if no one sees it. Give it away.
Pages: 467-469
Even a well-designed software artifact will not survive if no one sees it. Bundle it with a popular platform.