no, that's a bad design.
you can basically have 3 active groups then with the same method, let's call the method "Open",
when something Calls Open - it calls all 3 Open methods, though only 1 should be called (the specific one).
this causes more problems, especially if Open method handles items:
- if item doesn't exist it would cause an error
- if all 3 are run at the same time it is a performance problem (even though 2 would not do anything for example, or you expect only 1 to run)
- when designing your code - when you call method - it offers only one Open (but which one are you calling? )
additionally, since functions are GLOBAL, there should be a restraint to have 2 functions of same name in GLOBAL namespace, that's like the principle of programming.
if they could be separated by groups or etc, then it would be ok (like having a Class with a method), but you don't have.
and finally.. i see no problem calling different methods different name... if you have a method that does something called from 3 groups - make 1 method with 3 calls (in each group 1 ). And if you have 3 methods that have the same name and are spread throughout groups - call them differently. For example Open1, Open2, Open3 etc.. (or a bit smarter OpenDoors, OpenWindows, OpenChest etc.. )
that's called polymorphism and basically c2/c3 does that through families but it does it badly.. or doesn't even do at all. so yeah..