Да, хорошей практикой может быть повышение читабельности кода.
Допустим, у вас есть:
class Foo
{
public:
Foo(const myotherlib::x509::certificate& cert);
private:
myotherlib::x509::certificate m_cert;
}
Хорошей идеей будет немного напечатать вещи:
class Foo
{
public:
typedef myotherlib::x509::certificate cert_type;
Foo(const cert_type& cert);
private:
cert_type m_cert;
}
Это повышает удобочитаемость кода и имеет приятный побочный эффект: если вы когда-нибудь измените базовый класс сертификата, вам просто нужно изменить typedef
.
И чтобы ответить более полно, то же правило может применяться к «многоуровневым» указателям: если вы действительно пишете Foo***
повсюду, это может быть хорошей идеей, чтобы сделать вещи более читабельными, и typedef
хороший инструмент для этого.
Если однажды вы решите заменить свой Foo***
классом с такой же семантикой, изменение будет тривиальным не только в вашем коде, но и в любом клиентском коде, который также использует ваш.