Всем доброго времени суток!
В благом стремлении оставить после себя аккуратный код, переписываю фрагмент чтения содержимых файлов в подкаталогах каталога:
>Католог текстур
|
|--> Тип текстуры (Diffuse)
| |
| |-->Текстура_0.dds
| |-->Текстура_1.dds
| |-->Текстура_N.dds
|
|--> Тип текстуры (Normal)
| |
| |-->Текстура_0.dds
| |-->Текстура_1.dds
| |-->Текстура_N.dds
|
|--> Тип текстуры (Typename)
|
|-->Текстура_0.dds
|-->Текстура_1.dds
|-->Текстура_N.dds
Написал простой код, который читает это и что-то с этим делает :
ResourcesManager::ResourcesManager(QObject *parent) : QObject(parent)
{
QDir root(":/graphic/");
QStringList subdirs = root.entryList(QDir::NoDotAndDotDot|QDir::AllDirs);
qDebug() << subdirs ;
parceAllRes(root);
}
void ResourcesManager::parceAllRes(QDir root)
{
QDir textureSubdir(root.path()+"/textures/");
QStringList texturesTypes = textureSubdir.entryList(QDir::NoDotAndDotDot|QDir::AllDirs);
qDebug() << texturesTypes;
foreach (QString textureType, texturesTypes) {
QDir textureTypeSubdir(root.path()+"/textures/"+textureType);
QStringList texturesType = textureTypeSubdir.entryList();
foreach (QString textureFile, texturesType) {
qDebug() << "Type - " << textureType << " filename - " << textureFile;
}
}
}
И, если честно, я не понимаю, как можно избавиться от этой не очень приятной конструкции:
foreach (QString textureType, texturesTypes) {
QDir textureTypeSubdir(root.path()+"/textures/"+textureType);
QStringList texturesType = textureTypeSubdir.entryList();
foreach (QString textureFile, texturesType) {
qDebug() << "Type - " << textureType << " filename - " << textureFile;
}
}
Подскажите, как распутать подобную лапшу?
По функциям разбивать? Так еще больше можно запутаться.
Может книжку какую почитать, паттерн какой тут использовать?
Сильно извиняюсь, если вопрос слишком банальный для обсуждения, и крайне благодарен всем, кто сможет подсказать вектор для мысли.