Description

The Swiss Army Knife refers to a tool fulfilling a wide range of needs. The Swiss Army Knife design defect is a complex class that offers a high number of services, for example, a complex class implementing a high number of interfaces. A Swiss Army Knife is different from a Blob, because it exposes a high complexity to address all foreseeable needs of a part of a system, whereas the Blob is a singleton monopolising all processing and data of a system. Thus, several Swiss Army Knives may exist in a system, for example utility classes.

Detection Rules

RULE_CARD : SwissArmyKnife {

RULE : MultipleInterface {(STRUCT: MULTIPLE_INTERFACE, 3) };

};