User Tools

Site Tools


principles:information_expert

This is an old revision of the document!


Information Expert

Variants and Alternative Names

  • Tell Don't Ask
  • Do It Myself

Context

Definition

Assign a responsibility to this module which has the largest subset of the required information.

Description

Each module has a set of responsibilities. Subsystems have specific tasks, packages group several related classes, classes have methods and attributes, and so on. So there is a kind of mapping between modules and responsibilities. This mapping is good when the information which is necessary to fulfill the given task is present in the given module so there is no need to acquire all this information.

Rationale

When this principle is not adhered to, then a module has a responsibility for which it is lacking some information. So in order to fulfill the task the module has to first acquire the needed information by invoking other modules. This increases the dependencies between the modules (which may lead toripple effects).

Origin

Craig Larman: Applying UML and Patterns – An Introduction to Object-Oriented Analysis and Design and Iterative Development

Evidence

Relations to Other Principles

Generalizations

  • Low Coupling Adhering to the information expert principle leads to low coupling as there is less need to communicate with other modules to get the necessary information.
  • High Cohesion Adhering to information expert also means that a module only has responsibilities which belong together. So this increases cohesion.

Specializations

Contrary Principles

Complementary Principles

Principle Collections

OOD Principle Language
General Principles
ML KISS MIMC DRY GP RoE
Modularization Principles
MP HC ECV
Module Communication Principles
TdA/IE LC DIP
Interface Design Principles
EUHM PLS UP
Internal Module Design Principles
IH/E IAP LSP PSU

Example

Description Status

Further Reading

principles/information_expert.1621416017.txt.gz · Last modified: 2021-05-19 11:20 by 2a04:ac00:4:d29:5054:ff:fe00:d387