Blog Planet Wiki
Feed Feed It

Properties of Flexible Designs

Saturday, February 04, 2006 03:52 PM

If you're not a software person this probably won't apply to you.....A flexible object-oriented design exhibits several properties.

  • High cohesion

    The degree to which a class does just one kind of thing. Strive for high cohesion -- small classes that do just one kind of thing.

  • Low coupling

    Coupling involves what a class knows about the world beyond it. Strive for low coupling -- classes and objects that know as little as possible about other classes and objects.

  • An even distribution of behavior

    This is the degree to which an object "does things for itself." Strive to keep state and behavior together in an object. Strive to avoid "controller objects" that control other objects.

  • Strong modularity

    This is the degree to which "like things" are grouped. Strive to group objects into meaningful packages, subsystems, processes, etc.