Son zamanlarda kendimi sık sık bulduğum bir şey, o sınıfın içindeki belirli bir sınıfla ilgili typedef'leri, yani
class Lorem
{
typedef boost::shared_ptr<Lorem> ptr;
typedef std::vector<Lorem::ptr> vector;
//
// ...
//
};
Bu türler daha sonra kodun başka bir yerinde kullanılır:
Lorem::vector lorems;
Lorem::ptr lorem( new Lorem() );
lorems.push_back( lorem );
Beğendiğim nedenler:
- Sınıf şablonlarının getirdiği gürültüyü azaltır,
std::vector<Lorem>
olurLorem::vector
vb. - Bir niyet ifadesi görevi görür - yukarıdaki örnekte, Lorem sınıfının
boost::shared_ptr
bir vektör üzerinden sayıldığı ve saklandığı referans olması amaçlanmıştır . - Uygulamanın değişmesine izin verir - yani Lorem'in
boost::intrusive_ptr
daha sonraki bir aşamada müdahaleci referans olarak (eğer yoluyla ) sayılması için değiştirilmesi gerekiyorsa, bunun kod üzerinde minimum etkisi olacaktır. - Bence 'daha güzel' görünüyor ve okunması daha kolay.
Beğenmeme nedenleri:
- Bazen bağımlılıklar ile ilgili sorunlar vardır -
Lorem::vector
başka bir sınıfa gömmek istiyorsanız, ancak Lorem'i (başlık dosyasına bir bağımlılık getirmenin aksine) iletmek için sadece (veya istemeniz) gerekiyorsa, biraz tutarsız olan açık tipler (örneğin,boost::shared_ptr<Lorem>
yerineLorem::ptr
). - Çok yaygın olmayabilir ve bu nedenle anlaşılması daha zor olabilir mi?
Kodlama tarzımla objektif olmaya çalışıyorum, bu yüzden üzerinde başka fikirler almak iyi olur, böylece düşüncemi biraz parçalara ayırabilirim.