SORU
17 NİSAN 2009, Cuma


C - stil ve iyi veya kötü tarzında iç typedefs?

Son zamanlarda sık sık kendimi yaparken bulduğum bir şey typedefs bu sınıf içinde belirli bir sınıfı için ilgili ilan ediyor, yani

class Lorem
{
    typedef boost::shared_ptr<Lorem> ptr;
    typedef std::vector<Lorem::ptr>  vector;

//
// ...
//
};

Bu tür daha sonra başka bir yerde kod kullanılır:

Lorem::vector lorems;
Lorem::ptr    lorem( new Lorem() );

lorems.push_back( lorem );

Sebep bu gibi:

  • Gürültü sınıf şablonları tarafından sunulan, std::vector<Lorem> olur Lorem::vector, vb azaltır.
  • Bir niyet beyanı olarak hizmet vermektedir - yukarıdaki örnekte, Teşekkürler sınıfı boost::shared_ptr) sayılır ve bir vektör içinde saklanan referans olması amaçlanmıştır.
  • Bu kod için çok az etkisi olur uygulanmasını değiştirmek için - yani Teşekkürler intrusively referans sayılır (boost::intrusive_ptr) daha sonraki bir aşamada olması için değiştirilmesi gerekirse sağlar.
  • Bana öyle geliyor ki 'güzel' ve muhtemelen daha kolay okunur.

Beğenmedim sebep:

  • Orada bazen sorunlu bağımlılıklar - istersen göm, diyelim ki, bir Lorem::vector içerisinde başka bir sınıf, ama sadece ihtiyaç (veya istemek) için öne beyan Teşekkürler (karşıt olarak tanıtan bir bağımlılık başlığını dosya) o zaman senin olmam için kullanmak açık türleri (örneğin boost::shared_ptr<Lorem> yerine Lorem::ptr), biraz tutarsız.
  • Çok yaygın ve anlaşılması zor bu yüzden olabilir değil mi?

Benim düşüncem biraz incelemek bu da başka bir görüş almak için iyi olur kodlama tarzım ile objektif olmaya çalışıyorum.

CEVAP
17 NİSAN 2009, Cuma


Mükemmel bir tarzı olduğunu düşünüyorum, ve ben de ondan kullanıyorum. Her zaman en iyi isimleri kapsamını mümkün olduğunca sınırlamak ve sınıfları C bunu yapmak için en iyi yoldur . Örneğin, Standart C kitaplığı sınıflar içinde typedefs yoğun kullanımını yapar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CHISTOSITOJAJA

    CHISTOSITOJA

    27 HAZİRAN 2010
  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • the one am radio

    the one am r

    6 Mayıs 2006