Cohesion
A goal of modular programming is to create simple functions that perform a single task, but perform that task well. This can be described as how 'cohesive' a function is.
Two factors that affect the level of cohesion are:
The following table illustrates the different levels of cohesion:
Number of tasks |
Similarity |
Cohesion level |
Example |
---|---|---|---|
1 |
Not applicable |
High |
Sin(x) |
More than 1 |
Similar |
Moderate |
SinAndTan(x) |
More than 1 |
Dissimilar |
Low |
SinAndLength(x) |
Many |
Radically different |
None |
SinAndDateAndTimeAndSQLNext(x) |
For example, the function Sin(x) will perform one task - return the trigonometric Sine value of x. This is an example of a highly cohesive function. The function SinAndTan(x) performs two tasks - calculate the trigonometric Sine and Tan of the value X. This function has lower cohesion than Sin(x) because it performs two tasks.
Highly cohesive functions are more dependable, easier to modify, and easier to debug than functions that have lower levels of cohesion and are hence acceptable and encouraged.
Low cohesion functions are typically complex, prone to errors, and are more costly to fix. Low cohesion functions are regarded as poor programming practice and discouraged.