ควรหลีกเลี่ยง global variables ในทุกภาษา ไม่ใช่แค่ C++ เหตุผล:
- เข้าถึง/แก้ไขได้จากทุกส่วนของโค้ด: ยากมากที่จะติดตามว่ามีใครบ้างที่อาจแก้ไขค่า
- ไม่มี access control: ไม่สามารถจำกัดให้เฉพาะบางส่วนเข้าถึงได้
- Tight coupling: โค้ดต่างๆ ผูกมัดกันผ่าน global state
- Namespace pollution: ชื่อตัวแปรชนกัน นำไปสู่ bug ที่หายาก
- ยากต่อการทดสอบ (Testing): ยากที่จะแยก (decouple) เพื่อ unit test
有時候จำเป็นต้องใช้ global variable แต่ควรพิจารณาทางเลือกอื่นก่อน อ่านเพิ่ม: Global Variables Are Bad (c2 wiki)