如何提高不习惯 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;
};
我创建了一个包含 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;
};