java - Acyclic Dependency Principle - How could component dependency cycles be reason for "morning-after syndrome"? -


i reading "agile principles, patterns, , practices in c#" robert martin. , reading acyclic dependency principle(adp). , cant udnerstand 1 part in section. let me explain part in short.

firstly author gives definition of "morning-after syndrome".

have ever worked day, gotten stuff working, , gone home, arrive next morning find stuff no longer works? why doesn't work? because stayed later , changed depend on! call "the morning-after syndrome."

then explains how solve problem:

the solution problem partition development environment releasable components. components become units of work can responsibility of developer or team of developers. when developers component working, release use other developers. give release number, , move directory other teams use, , continue modify component in own private areas. else uses released version. new releases of component made, other teams can decide whether adopt new release. if decide not to, continue using old release. once decide ready, begin use new release.

then shows example component structure has not depdendancy cycle:

what isimportant dependency structure of components. note structure directed graph. components nodes, , dependency relationships directed edges.

enter image description here

and let new requirement forces change 1 of classes in mydialogs such makes use of class in myapplication. can guess, creates dependancy cycle:

enter image description here

and notes that:

the cycle forces myapplication, mytasks, , mydialogs released @ same time.

my question that: why? if using releasable components, why other 2 components must released @ same time mydialogs?

thanks in advance.

"the cycle forces ... always released @ same time" not true.

but cyclic dependency means can make simultaneous changes myapplication , mydialogs depend on each other, , then have release them @ same time.

if ensure component dependencies acyclic, never forced release both @ same time.

also, if there dependency cycle in first release of components, have release them @ same time initially.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -