The ideal software structure is one having components that are small
and loosely coupled; this ideal structure is called ravioli code. In
ravioli code, each of the components, or objects, is a package
containing some meat or other nourishment for the system; any
component can be modified or replaced without significantly affecting
other components.
We need to go beyond the condemnation of spaghetti code to the
active encouragement of ravioli code.