0

I know that there are many questions of similar title like this. However, I read all of them and I cannot get to solve my problem. I've fallen in a circular dependency where I have those functions[each one defined in a dedicated module]:

  • generateNodeCode
  • generateGroupCode
  • generateContainerCode

and the circle is closed by generateNodeCode referencing generateGroupCode which in turn referencing generateGroupCode which in turn referencing generateContainerCode.

To simplify the situation, look at this graph. enter image description here

I know that I should refactor this to reach a better design but I do not know how.

Here is an example code:

generateNodeCode.js

const { generateGroupCode } = require("./generateGroupCode");

function generateNodeCode(node) {
  switch(node.constructor.name) {
    // many cases
    case "Group":
      return generateGroupCode(node);
  }
}

module.exports = {
  generateNodeCode
};

generateGroupCode.js

const { generateContainerCode } = require("./generateContainerCode");

function generateGroupCode(group) {
  // some stuff
  return generateContainerCode();
}

module.exports = {
  generateGroupCode
};

generateContainerCode.js

const { generateNodeCode } = require("./generateNodeCode");

function generateContainerCode(children) {
  // some stuff
  children.forEach(child => {
    generateNodeCode();
  });
}

module.exports = {
  generateContainerCode
};
Hosam Abdelnaser
  • 127
  • 2
  • 11

0 Answers0