如何提高不习惯 multi_index_container 的程序员的可读性?

How to improve readability of multi_index_container for programmers not used to it?

我创建了一个包含 3 个非唯一、无序键的多索引容器,如下所示:

namespace bmi = boost::multi_index;
class SurveyRepository {
// some other code
    using SurveyCodeContainer = boost::multi_index_container<
        SurveyCode,
        bmi::indexed_by<
            bmi::hashed_non_unique<bmi::tag<Survey>, bmi::member<SurveyCode, unsigned, &SurveyCode::survey_id>>,
            bmi::hashed_non_unique<bmi::tag<Table>, bmi::member<SurveyCode, unsigned, &SurveyCode::table_id>>,
            bmi::hashed_non_unique<bmi::tag<Check>, bmi::member<SurveyCode, unsigned, &SurveyCode::check_id>>
        >
    >;

    SurveyCodeContainer m_SurveyCodeContainer;
};

重点是能够使用这些键中的任何一个搜索 SurveyCode 对象,我认为它完全可读并且是一个非常简洁的解决方案。

但是有一次代码审查,虽然 multi_index_container 过去已经在我们的代码库中使用过,但有些人对这样的注释感到困惑:

Isnt there a less ugly container?

那么有什么方法可以降低 ugly/more 可读性吗?我们正在使用 Visual Studio 2019,我更喜欢 stl 的一些解决方案而不是 boost,但我想没有,对吧?

如果您使用的是 C++17,则有 slightly more convenient syntax 可用:

namespace bmi = boost::multi_index;
class SurveyRepository {
// some other code
   using SurveyCodeContainer = boost::multi_index_container<
        SurveyCode,
        bmi::indexed_by<
            bmi::hashed_non_unique<bmi::tag<Survey>, bmi::key<&SurveyCode::survey_id>>,
            bmi::hashed_non_unique<bmi::tag<Table>, bmi::key<&SurveyCode::table_id>>,
            bmi::hashed_non_unique<bmi::tag<Check>, bmi::key<&SurveyCode::check_id>>
        >
    >;

    SurveyCodeContainer m_SurveyCodeContainer;
};