   reusable and maintainable and expandable
  I found maintainable and expandable actually base resuable. they are a kind of reusablity.maintainable and expandable mean current module will be discarded. it mean current code can reuse in new situation. do I think right? what do you think that?   
  reusable - loosely coupledmaintainable - good coding practicesexpandable - good design   ;  Reusable - generic solution to a common problem that can be used 'as is' Example: a Windows object that sets up the window class and message pump.Maintainable - Easily understandable by others besides the original programmer/designer.  Also easy to update the 'guts' of the class for improved technology or designs.Example:  A searching class.  It's maintainable if it's easy to understand and it could be possible in the future to change how the search is done without affecting the interface.Expandable - Ability to add to the object to get desired behaviour not defined by the original object.  Example: A GUI Widget button where you can define your own drawing routines or onDown actions.   