·
One of the basic rules concerning programming is that no routine should
ever exceed a page. This is accomplished by breaking the program down into
modules.
·
Each module is a logical unit and does a specific job. Its size is kept
small by calling other modules.
·
Modularity has several advantages. First, it is much easier to debug
small routines than large routines. Second, it is easier for several people to
work on a modular program simultaneously. Third, a well-written modular program
places certain dependencies in only one routine, making changes easier.
·
For instance, if output needs to be written in a certain format, it is
certainly important to have one routine to do this.
·
If printing statements are
scattered throughout the program, it will take considerably longer to make
modifications.
·
The idea that global variables and side effects are bad is directly
attributable to the idea that modularity is good.
·
An abstract data type (ADT) is a set of
operations. Abstract data types are mathematical abstractions; nowhere in an
ADT's definition is there any mention of how the set of operations is
implemented. This can be viewed as an extension of modular design.
·
Objects such as lists, sets, and graphs, along
with their operations, can be viewed as abstract data types, just as integers,
reals, and booleans are data types. Integers, reals, and booleans have
operations associated with them, and so do abstract data types.
·
For the set ADT, there may be operations as union, intersection, size,
and complement. Alternately, the two operations union and find, which would
define a different ADT on the set.
·
The basic idea is that the implementation
of these operations is written once in the program, and any other part of the
program that needs to perform an operation on the ADT can do so by calling the
appropriate function.
·
If for some reason implementation details need to change, it should be
easy to do so by merely changing the routines that perform the ADT operations.
This change, would be completely transparent to the rest of the program.