บางสิ่งที่ฉันพบว่าตัวเองกำลังทำอยู่บ่อยครั้งเมื่อเร็ว ๆ นี้ได้ประกาศแนวความคิดที่เกี่ยวข้องกับชั้นเรียนเฉพาะภายในชั้นเรียนนั้นเช่น
class Lorem
{
typedef boost::shared_ptr<Lorem> ptr;
typedef std::vector<Lorem::ptr> vector;
//
// ...
//
};
ประเภทเหล่านี้จะถูกใช้ที่อื่นในรหัส:
Lorem::vector lorems;
Lorem::ptr lorem( new Lorem() );
lorems.push_back( lorem );
เหตุผลที่ฉันชอบ:
- มันช่วยลดเสียงรบกวนที่นำโดยแม่ชั้น
std::vector<Lorem>
จะกลายLorem::vector
เป็นต้น - มันทำหน้าที่เป็นคำสั่งของเจตนา - ในตัวอย่างข้างต้นคลาส Lorem มีจุดประสงค์ที่จะอ้างอิงนับผ่าน
boost::shared_ptr
และเก็บไว้ในเวกเตอร์ - จะช่วยให้การดำเนินการเปลี่ยนแปลง - เช่นถ้า Lorem จำเป็นต้องเปลี่ยนเป็นการอ้างอิงอย่างคร่าวๆนับ (ผ่าน
boost::intrusive_ptr
) ในระยะต่อมานี่จะมีผลกระทบน้อยที่สุดกับรหัส - ฉันคิดว่ามันดูดีกว่าและอ่านง่ายกว่า
เหตุผลที่ฉันไม่ชอบ:
- บางครั้งมีปัญหาเกี่ยวกับการพึ่งพา - หากคุณต้องการฝังพูด
Lorem::vector
ในคลาสอื่น แต่ต้องการเพียง (หรือต้องการ) เพื่อส่งต่อประกาศ Lorem (ซึ่งตรงกันข้ามกับการแนะนำการพึ่งพาไฟล์ส่วนหัวของมัน) จากนั้นคุณต้องใช้ ประเภทที่ชัดเจน (เช่นboost::shared_ptr<Lorem>
มากกว่าLorem::ptr
) ซึ่งไม่สอดคล้องกันเล็กน้อย - มันอาจจะไม่ธรรมดามากและยากที่จะเข้าใจ?
ฉันพยายามทำตามสไตล์การเขียนโค้ดของฉันดังนั้นมันจะเป็นการดีถ้าได้รับความเห็นอื่น ๆ เกี่ยวกับมันเพื่อที่ฉันจะสามารถแยกความคิดออกไปเล็กน้อย