Acyclic dependencies principle

The acyclic dependencies principle (ADP) is a software design principle defined by Robert C. Martin that states that "the dependency graph of packages or components should have no cycles".

[1] This implies that the dependencies form a directed acyclic graph.

[2] Software dependencies can either be explicit or implicit.

Examples of explicit dependencies includes: Examples of implicit dependencies includes:[3] In general, it's considered good practice to prefer explicit dependencies whenever possible.

It is in general always possible to break a cyclic dependency chain.

Circular dependency example