ใช้เครื่องมือที่เหมาะสมสำหรับงาน
หากโปรแกรมของคุณสามารถโยนข้อยกเว้นให้แน่ใจว่ารหัสของคุณเป็นข้อยกเว้นทราบ การใช้พอยน์เตอร์อัจฉริยะ RAII และการหลีกเลี่ยงการสร้าง 2 เฟสนั้นเป็นจุดเริ่มต้นที่ดี
หากคุณมีการอ้างอิงแบบวนรอบโดยไม่มีซีแมนทิกส์เป็นเจ้าของชัดเจนคุณสามารถลองใช้ไลบรารี่คอลเลคชั่นขยะหรือปรับโครงสร้างการออกแบบของคุณใหม่
ห้องสมุดที่ดีจะช่วยให้คุณสามารถเขียนโค้ดตามแนวคิดไม่ใช่ประเภทดังนั้นจึงไม่สำคัญว่าในกรณีส่วนใหญ่ตัวชี้ประเภทใดที่คุณใช้อยู่นอกเหนือจากปัญหาการจัดการทรัพยากร
หากคุณทำงานในสภาพแวดล้อมแบบมัลติเธรดตรวจสอบให้แน่ใจว่าคุณเข้าใจว่าวัตถุของคุณอาจใช้ร่วมกันข้ามเธรด หนึ่งในเหตุผลหลักที่ควรพิจารณาใช้ boost :: shared_ptr หรือ std :: tr1 :: shared_ptr คือเนื่องจากมันใช้การนับจำนวนการอ้างอิงแบบเธรดที่ปลอดภัย
หากคุณกังวลว่าการจัดสรรการอ้างอิงแยกต่างหากจะมีอยู่หลายวิธีด้วยกัน การใช้ไลบรารี boost :: shared_ptr คุณสามารถรวมกลุ่มการจัดสรรเคาน์เตอร์อ้างอิงหรือใช้ boost :: make_shared (การตั้งค่าของฉัน) ซึ่งจัดสรรวัตถุและจำนวนการอ้างอิงในการจัดสรรครั้งเดียวซึ่งช่วยลดแคชส่วนใหญ่ที่ผู้คนกังวล คุณสามารถหลีกเลี่ยงความนิยมในการทำงานของการอัปเดตจำนวนการอ้างอิงในโค้ดที่มีประสิทธิภาพที่สำคัญโดยถือการอ้างอิงไปยังวัตถุที่ระดับสูงสุดและผ่านการอ้างอิงโดยตรงไปยังวัตถุ
หากคุณต้องการความเป็นเจ้าของร่วม แต่ไม่ต้องการจ่ายค่าใช้จ่ายในการนับการอ้างอิงหรือการเก็บขยะให้พิจารณาใช้วัตถุที่ไม่เปลี่ยนรูปหรือสำเนาสำนวนการเขียน
โปรดจำไว้ว่าการชนะการแสดงที่ยิ่งใหญ่ที่สุดของคุณจะอยู่ที่ระดับสถาปัตยกรรมตามด้วยอัลกอริทึมและในขณะที่ความกังวลในระดับต่ำเหล่านี้มีความสำคัญมาก หากคุณกำลังจัดการกับปัญหาด้านประสิทธิภาพในระดับแคชที่หายไปคุณมีโฮสต์ทั้งหมดของปัญหาที่คุณต้องระวังเช่นการแบ่งปันที่ไม่ถูกต้องซึ่งไม่มีส่วนเกี่ยวข้องกับพอยน์เตอร์ต่อการพูด
หากคุณใช้พอยน์เตอร์สมาร์ทเพียงเพื่อแชร์ทรัพยากรเช่นพื้นผิวหรือแบบจำลองให้พิจารณาไลบรารี่พิเศษเช่น Boost.Flyweight
เมื่อมาตรฐานใหม่กลายเป็นความหมายของการย้ายที่เป็นที่ยอมรับการอ้างอิงที่คุ้มค่าและการส่งต่อที่สมบูรณ์แบบจะทำให้การทำงานกับวัตถุและภาชนะที่มีราคาแพงง่ายขึ้นและมีประสิทธิภาพมากขึ้น จนกว่าจะถึงตอนนั้นอย่าเก็บพอยน์เตอร์ด้วยซีแมนทิกต์การทำลายล้างเช่น auto_ptr หรือ unique_ptr ในคอนเทนเนอร์ (แนวคิดมาตรฐาน) พิจารณาใช้ไลบรารี Boost.Pointer Container หรือจัดเก็บพอยน์เตอร์สมาร์ทพอยน์เตอร์ที่เป็นเจ้าของร่วมในตู้คอนเทนเนอร์ ในโค้ดที่มีประสิทธิภาพที่สำคัญคุณสามารถหลีกเลี่ยงทั้งสองอย่างนี้ในความโปรดปรานของคอนเทนเนอร์ที่ล่วงล้ำเช่นใน Boost.Intrusive
แพลตฟอร์มเป้าหมายไม่ควรมีอิทธิพลต่อการตัดสินใจของคุณมากเกินไป อุปกรณ์ในตัว, สมาร์ทโฟน, โทรศัพท์ใบ้, พีซีและคอนโซลสามารถเรียกใช้โค้ดได้ทั้งหมด ข้อกำหนดของโครงการเช่นงบประมาณหน่วยความจำที่เข้มงวดหรือไม่มีการจัดสรรแบบไดนามิกตลอดเวลาหลังจากโหลดเป็นข้อกังวลที่ถูกต้องมากขึ้นและควรมีผลต่อตัวเลือกของคุณ