I like the idea especially if its only for compile/test time and doesn't
make it into the binary bits.

On Fri, Jun 21, 2019 at 1:04 PM Udo Kohlmeyer <u...@apache.org> wrote:

> Thank you for the response...
>
> #1 - But isn't cyclical package dependent code not a smell and practice,
> whilst at the same time and uni-directional dependency is preferred.
>
> Soo... I think I see the benefit to be more, that ArchUnit allows the
> untangling of code into a modular way WITHOUT a big bang approach of
> moving the code into modules and then having to be concerned about the
> fallout. But also it allows for the managing of package dependencies
> WITHOUT breaking the code out into different separate modules.
>
> I really like ArchUnit :).. We should prioritize adoption :)
>
> --Udo
>
> On 6/21/19 12:48, Murtuza Boxwala wrote:
> > Two things come to mind:
> >
> > 1) uni-directional dependency
> > Packages can be dependent on each other, because the classes inside of
> them can use each other. e.g.  let’s say package A has class A1 and class
> A2 and package B has class B1 and B2.  A1 can depend on B1, and B2 can
> depend on A2. Hence, the packages are dependent on each other.
> >
> > Modules can only have uni-directional dependency. If Module A depends on
> Module B, then no class in Module B can reference a class in Module A.
> This prevents tangling, i.e. spaghetti
> >
> > 2) Incremental compilation
> > This lack of tangling helps not only developers, but the compiler too.
> In the packages example above, if I change any of the classes, all the code
> has to get recompiled because the dependency lines can go in any direction,
> and the compiler won’t attempt to optimize.  In the modules case, if Module
> A changes, Module B will not recompile, because the dependency guarantees
> that nothing about Module B could have been affected.
> >
> >> On Jun 21, 2019, at 2:14 PM, Udo Kohlmeyer <u...@apache.org> wrote:
> >>
> >> I know that I'm missing the benefit of physically moving the code from
> the package into its own module.
> >>
> >> Could you possibly explain to me what it is?
> >>
> >> On 6/21/19 07:37, Murtuza Boxwala wrote:
> >>> I think that’s a really clever way to increment toward splitting
> geode-core into more modules. I am excited to see what it looks like 👍
> >>>
> >>>> On Jun 20, 2019, at 7:45 PM, Jacob Barrett <jbarr...@pivotal.io>
> wrote:
> >>>>
> >>>> Gotcha! Sounds good.
> >>>>
> >>>>> On Jun 20, 2019, at 4:35 PM, Dan Smith <dsm...@pivotal.io> wrote:
> >>>>>
> >>>>> We don't have a membership gradle module, just a package. We're
> adding this
> >>>>> to geode-core.
> >>>>>
> >>>>> For a little more context - we are thinking about refactoring
> membership
> >>>>> (and/or maybe some other pieces) into separate gradle modules -
> proposal
> >>>>> forthcoming! However, as a first step we need to untangle those
> pieces of
> >>>>> code from the rest of geode-core. Rather than creating some long
> lived
> >>>>> branch we can incrementally untangle the code a piece at a time, on
> >>>>> develop. Having a way to track progress and enforce the direction of
> >>>>> dependencies on the way to a separate gradle module will help with
> that.
> >>>>>
> >>>>> -Dan
> >>>>>
> >>>>>> On Thu, Jun 20, 2019 at 4:23 PM Jacob Barrett <jbarr...@pivotal.io>
> wrote:
> >>>>>>
> >>>>>> Are you adding this dependency to just the membership module? I am
> cool
> >>>>>> with that.
> >>>>>>
> >>>>>>> On Jun 20, 2019, at 2:39 PM, Dan Smith <dsm...@pivotal.io> wrote:
> >>>>>>>
> >>>>>>> Hi all,
> >>>>>>>
> >>>>>>> Bill, Ernie, and I would like to add a new (apache licensed) test
> >>>>>>> dependency to geode-core - https://github.com/TNG/ArchUnit. This
> is a
> >>>>>> tool
> >>>>>>> that lets you write tests that make assertions about the
> >>>>>> interdependencies
> >>>>>>> of your code - for example enforcing that package A does not
> depend on
> >>>>>>> package B.
> >>>>>>>
> >>>>>>> Initially we intend to add some tests about what parts of the
> system the
> >>>>>>> org.apache.geode.distributed.internal.membership package depends
> on, with
> >>>>>>> an eye towards making that code more independently testable
> (proposal on
> >>>>>>> that coming soon!).
> >>>>>>>
> >>>>>>> Does anyone have an issue with adding this test dependency?
> >>>>>>>
> >>>>>>> -Dan
> >
>


-- 
Charlie Black | cbl...@pivotal.io

Reply via email to