in reply to Re: Mini-Tutorial: Mutual Use of Exporting Modules
in thread Mini-Tutorial: Mutual Use of Exporting Modules

What if ModA is Car and ModB is CarEngine? There's nothing inherently wrong with the concept. Sometimes refactoring is in order. Sometimes it's not. (And sometimes, refactoring is not an option for business reasons.)
  • Comment on Re^2: Mini-Tutorial: Mutual Use of Exporting Modules

Replies are listed 'Best First'.
Re^3: Mini-Tutorial: Mutual Use of Exporting Modules
by tilly (Archbishop) on Jul 10, 2009 at 04:16 UTC
    CarEngines can be put in things other than cars.

    I have yet to see a case of circular requires that would not be much clearer if refactored. I have, however, great sympathy for the situation where refactoring is not an option for business reasons.

Re^3: Mini-Tutorial: Mutual Use of Exporting Modules
by Jenda (Abbot) on Jul 10, 2009 at 11:09 UTC

    If ModA is Car and ModB is CarEngine then I understand that the Car wants to import CarEngine because Car HasA CarEngine, I don't see why would CarEngine import Car. Even if it later keeps a IsIn reference.

    The concept makes about as much sense as multiple inheritance. It looked like a good idea at first, but it causes too many subtle and hard to debug problems. Which is why things like mixins were invented. Though of course it means a bit of refactoring, instead of merging two classes and hoping for the best.

    Jenda
    Enoch was right!
    Enjoy the last years of Rome.