Я думаю, Узел слишком переполнен этими средствами доступа, которые, по-видимому, являются лишь косвенным способом разоблачения ваших частных пользователей.Я думаю, что удаление этих статических членов в пространство имен приложения будет немного чище.Например:
namespace mycompiler {
class Node {
...
};
class ParseTree {
...
};
const Node* FindParent(...);
int Height(...);
void Print(...);
}
Таким образом, вы все равно можете избежать загрязнения глобального пространства имен, но в то же время уменьшите классы Node и ParseTree.Вы также можете перегрузить некоторые mycompiler::
функции (например, Print()
), чтобы принять любой объект из вашего пространства имен, если вы не хотите вставлять их в свои классы.Это сделало бы Node и ParseTree более интеллектуальными контейнерами, в то время как некоторая внешняя логика (для соответствующих классов) могла бы быть изолирована в mycompiler::
.