In my work (which is 90% Java but I\'m sure this question applies to other languages) I often create two classes that \"know about\" each other. More concretely, class A im
If the two classes belong to the same logical module, then it's probably fine (still a judgement call of course, with lots of grey areas).
It's less fine if the two classes belong to different modules. This creates a circular dependency between modules. I try to avoid that as much as can, preferring a clear hierarchical structure.