On Sun, Aug 15, 2010 at 7:45 AM, Brian Hurt <bhur...@gmail.com> wrote:
> Circular dependencies are then the canary in the coal mine, warning you that
> your code is trending (hard) towards unmaintainability, You ignore the
> warning at your peril.

Avoiding circular dependencies can result in either:
a) Everything ends up in one file.
b) Everything ends up in zillions of small files with very complex
dependency structures (and every time you move a function from one
namespace to another to avoid a circular dependency, you have to
locate every file that uses the relocated function and change the
references to that function, all without the help of IDEs that do this
kind of refactoring for you -- it can be a lot of work).

Both of these scenarios result in their own significant
maintainability problems.  I think it's much more ideal to be able to
divide modules of functions into the appropriate granularity for the
task at hand.  I have found that for some tasks, circular dependencies
arise very naturally at the desired level of granularity, and I don't
like having to rework everything into something that avoids circular
dependencies.  This problem seems to be especially acute in rapidly
evolving systems, because you're forced to constantly think about
conforming to an acyclic structure at a time when you're focusing on
something other than overall structure.  I'd rather get things to
work, and *then* when the code base becomes stable, figure out a more
optimal organization.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to