c++ - naming convention when typedef standard collections -
i looking naming conventions typedef of lengthy collections definitions. have c++ code used auto
away style murder, need make code compiling on non c++11 compiler. looking establish convention typedef
of collections, can become quite lengthy
for instance
typedef std::map<enum myfirstenum,enum mysecondenum> map_enum2_by_enum1_t typedef map_enum2_by_enum1_t::value_type vtype_map_enum2_by_enum1_t typedef map_enum2_by_enum1_t::iterator map_iterator_enum2_by_enum1_t
there many nuances (iterator
before t
@ beginning, using type rather t, ditching prefix map
, etc...) half of time select 1 nuance, half of time select other. @ end no typedef other.
typedef std::map<enum myfirstenum,enum mysecondenum> map_enum2_by_enum1_t;
if there's no "big picture" name better describes mapping, i'd suggest enum2_by_enum1
or enum1_to_enum2
: both imply associative container without map
bit, bit hungarian taste, same flaws (e.g. if move unordered_map
change - if remember - or leave being misleading?).
typedef map_enum2_by_enum1_t::value_type vtype_map_enum2_by_enum1_t;
i can't imagine being useful... i'd typically typedef
map's value_type
inside template when concrete value type unknown (e.g. map or value type 1 of template parameters) , map has no special or exclusive significance such value_type
can reasonably typedef
ed the template's value_type
, , in scenario map have other higher-level name reflecting role in template instantiation.
in conclusion, i'd omit if @ possible , use enum2
/myfirstenum
directly.
typedef map_enum2_by_enum1_t::iterator map_iterator_enum2_by_enum1_t;
there's no reason unless typedef
identifier shorter aliases. use <mapname>::iterator
.
if think you've got specific examples of code that's improved having these last 2 typedefs, please share it.
Comments
Post a Comment