গ্লোবাল ভেরিয়েবল যেকোনো ল্যাঙ্গুয়েজে বাজে অভ্যাস, C++-এও একই। কারণ:
- নেমস্পেস পলিউশন: গ্লোবাল নেমস্পেস দূষিত হয়, নাম সংঘর্ষের ঝুঁকি।
- টাইট কাপলিং: কোডের ভিন্ন অংশগুলো একে অপরের ওপর অতিরিক্তভাবে নির্ভরশীল হয়।
- অ্যাক্সেস কন্ট্রোল নেই: প্রোগ্রামের যেকোনো জায়গা থেকে মডিফাই করা যায়, বাগ ট্র্যাক করা কঠিন।
- টেস্টিং কষ্টকর: ইউনিট টেস্টে গ্লোবাল স্টেট আইসোলেট করা কঠিন।
- কনকারেন্সি ইস্যু: মাল্টি-থ্রেডেড প্রোগ্রামে ডেটা রেসের কারণ।
বিকল্প: সিঙ্গলটন প্যাটার্ন (সাবধানে), নেমস্পেস-স্কোপ static, ডিপেন্ডেন্সি ইনজেকশন, কনফিগারেশন অবজেক্ট।
কখনও কখনও গ্লোবাল বাধ্য (যেমন এমবেডেড সিস্টেমে হ্যাভার্ডওয়্যার রেজিস্টার), কিন্তু সেটি ব্যতিক্রম।