コードをより簡単に変更できるようにするために、多くの型エイリアス (typedef) を書いていることに気付きますが、同時に、自分で作業しようとしている人々に多くの混乱を引き起こす可能性があるため、それを避けるように何かが教えてくれます。コード。
おそらく最良の例ではありませんが、こちらをご覧ください。また、より最近の例を挙げます。これらは、XML パーサーを作成するときにいじったいくつかのクラスです。
namespace XML
{
struct Attribute
{
typedef std::string name_t;
typedef std::string value_t;
Attribute(const name_t &name, const value_t &value = "");
name_t name;
value_t value;
};
}
namespace XML
{
class Element
{
private:
typedef std::list<Attribute> attribute_container;
typedef std::list<Element> element_container;
public:
typedef attribute_container::iterator attribute_iterator;
typedef attribute_container::const_iterator const_attribute_iterator;
typedef element_container::iterator element_iterator;
typedef element_container::const_iterator const_element_iterator;
typedef std::string name_t;
typedef std::string data_t;
...
private:
name_t _name;
data_t _data;
attribute_container _attributes;
element_container _child_elements;
このようにすることで、コードの記述が容易になり、おそらく直感的にも理解できるようになりますが、このような方法の欠点は何でしょうか?