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.