Re: Вопрос целесообразности обобщения
От: sergii.p  
Дата: 10.07.23 08:25
Оценка:
Здравствуйте, Sm0ke, Вы писали:

S>Согласитесь, что читателю кода было бы нагляднее видеть в качестве value_type структуру со свойствами (key, value).


конечно в теории оно должно быть лучше. Но на пректике мне визуально не нравится

struct MyStruct {
    struct MyPair {
        std::string key;
        std::string value;
    };
    MyPair insert();
};

MyStruct::MyPair MyStruct::insert() {
}


обилие вложенностей немного смущает. Особенно если кто-то не любит auto.

S>
S>auto res = v_map.try_emplace(v_key, v_arg);
S>if( res.was_added ) {
S>  res.it->value.some_method();
S>}
S>


S>Красота!


Это не красота. Вот это красота

const auto [it, was_added] = v_map.try_emplace(v_key, v_arg);
auto& [key, value] = *it;
if(was_added) {
    value.some_method();
}


Вообще, конечно заводить структуры вроде как правильно и особо тут спорить не о чем, но предложу другой подход: усилить систему типов.

template<typename Name> struct NewStringType {
    ...
};
using MuduleName = NewStringType<struct ModuleNameHelp>;
using VarName = NewStringType<struct VarNameHelp>;


и тогда особо пофигу: в структуре завёрнуты значения или в тюпле. Можно забыть/ошибиться. Компилятор за всем проследит и "аккуратно но сильно" даст по рукам.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.