ভিনসেন্ট রবার্ট তার মন্তব্যে ঠিক বলেছেন আপনি সি ++ তে নামস্থান কীভাবে ব্যবহার করবেন? ।
নেমস্পেস ব্যবহার করা
নামের সংঘাত এড়াতে সহায়তার জন্য নেমস্পেসগুলি খুব কম ব্যবহার করা হয়। জাভাতে, এটি "org.domain" আইডিয়মের মাধ্যমে প্রয়োগ করা হয় (কারণ এটির নিজের ডোমেন নাম বাদে অন্য কিছু ব্যবহার করা হবে না বলে ধারণা করা হয়)।
সি ++ এ আপনি আপনার মডিউলের সমস্ত কোডকে একটি নেমস্পেস দিতে পারেন। উদাহরণস্বরূপ, মডিউল MyModule.dll মডিউলটির জন্য, আপনি এর কোডটিকে নাম স্থান মাইমোডুল দিতে পারেন। আমি অন্য কোথাও মাইকম্পানি :: মাইপ্রজেক্ট :: মাইমডুল ব্যবহার করে দেখেছি। আমি অনুমান করি যে এটি অত্যধিক দক্ষ, তবে সর্বোপরি এটি আমার কাছে সঠিক বলে মনে হচ্ছে।
"ব্যবহার করে" ব্যবহার করা হচ্ছে
ব্যবহারটি অত্যন্ত যত্ন সহকারে ব্যবহার করা উচিত কারণ এটি কার্যকরভাবে আপনার বর্তমান নেমস্পেসে একটি নেমস্পেস থেকে একটি (বা সমস্ত) প্রতীক আমদানি করে।
এটি একটি হেডার ফাইলটিতে করা খারাপ কারণ আপনার শিরোনাম এটি সহ প্রতিটি উত্সকে দূষিত করে দেবে (এটি আমাকে ম্যাক্রোর ... remind নাম স্থান থেকে প্রতীক।
"ব্যবহার করে" ব্যবহারের সর্বাধিক সুরক্ষিত উপায় হল নির্বাচিত প্রতীকগুলি আমদানি করা:
void doSomething()
{
using std::string ; // string is now "imported", at least,
// until the end of the function
string a("Hello World!") ;
std::cout << a << std::endl ;
}
void doSomethingElse()
{
using namespace std ; // everything from std is now "imported", at least,
// until the end of the function
string a("Hello World!") ;
cout << a << endl ;
}
আপনি "নেমস্পেস স্ট্যান্ড ব্যবহার করে অনেকগুলি" দেখতে পাবেন; টিউটোরিয়াল বা উদাহরণ কোডগুলিতে। পড়াটি সহজ করার জন্য প্রতীক সংখ্যা হ্রাস করার কারণ এটি নয় কারণ এটি একটি ভাল ধারণা।
"নেমস্পেস স্ট্যান্ড ব্যবহার করে;" স্কট মায়ার্স দ্বারা নিরুৎসাহিত হয়েছেন (কোন বইটি ঠিক মনে নেই, তবে প্রয়োজনে এটি খুঁজে পেতে পারি)।
নেমস্পেস কম্পোজিশন
নেমস্পেসগুলি প্যাকেজের চেয়ে বেশি। আর একটি উদাহরণ পাওয়া যায় বার্জন স্ট্রস্ট্রপের "দ্য সি ++ প্রোগ্রামিং ল্যাঙ্গুয়েজে"।
"স্পেশাল এডিশন" এ, 8.2.8 নেমস্পেস কম্পোজিশনে , তিনি বর্ণনা করেছেন যে আপনি কীভাবে দুটি নামস্থান এএএ এবং বিবিবিকে সিসিসি নামক একটিতে যুক্ত করতে পারেন। সুতরাং সিসিসি এএএ এবং বিবিবি উভয়েরই একটি নাম হয়ে যায়:
namespace AAA
{
void doSomething() ;
}
namespace BBB
{
void doSomethingElse() ;
}
namespace CCC
{
using namespace AAA ;
using namespace BBB ;
}
void doSomethingAgain()
{
CCC::doSomething() ;
CCC::doSomethingElse() ;
}
এমনকি নিজস্ব কাস্টম নেমস্পেস ইন্টারফেসটি তৈরি করতে আপনি বিভিন্ন নেমস্পেসগুলি থেকে নির্বাচিত চিহ্নগুলি আমদানি করতে পারেন। আমি এখনও এর ব্যবহারিক ব্যবহার খুঁজে পাইনি, তবে তত্ত্বের দিক থেকে এটি দুর্দান্ত।
std
নাম ব্যবহারের পরিবর্তে প্রতীকগুলিতে উপসর্গ করা অভ্যাসusing
করা ভাল। তাই আমি সবসময় লিখিstd::cout
বাstd::string
এখনই কারণ এটাই আমি তাদের এখন ডাকছি। আমি শুধু লিখতে হবে নাcout
।