উদ্দেশ্য-সি এর কোন নামস্থান নেই; এটি অনেকটা সি এর মতো, সমস্ত কিছুই এক গ্লোবাল নেমস্পেসের মধ্যে। সাধারণ অনুশীলন হ'ল আদ্যক্ষর সহ ক্লাসের উপসর্গ করা, যেমন আপনি যদি আইবিএম-এ কাজ করছেন, আপনি তাদের "আইবিএম" দিয়ে উপসর্গ করতে পারেন; আপনি যদি মাইক্রোসফ্টের হয়ে কাজ করেন তবে আপনি "এমএস" ব্যবহার করতে পারেন; ইত্যাদি। কখনও কখনও প্রারম্ভিক প্রকল্পটি বোঝায়, যেমন "এআই" এর সাথে অ্যাডিয়াম উপসর্গের ক্লাস (যেমন এর পিছনে কোনও সংস্থা নেই যে আপনি আদ্যক্ষর নিতে পারতেন)। অ্যাপল এনএস সহ ক্লাস করে এবং বলে যে এই উপসর্গটি কেবল অ্যাপলের জন্য সংরক্ষিত।
এখন পর্যন্ত এত ভাল। তবে সামনের শ্রেণীর নামের সাথে 2 থেকে 4 টি অক্ষর যুক্ত করা খুব, খুব সীমাবদ্ধ নেমস্পেস। যেমন এমএস বা এআই এর সম্পূর্ণ আলাদা অর্থ হতে পারে (উদাহরণস্বরূপ এআই কৃত্রিম বুদ্ধিমত্তা হতে পারে) এবং অন্য কোনও বিকাশকারী সেগুলি ব্যবহার করার সিদ্ধান্ত নিতে পারে এবং একটি সমান নামযুক্ত বর্গ তৈরি করতে পারে। ব্যাং , নেমস্পেসের সংঘর্ষ।
ঠিক আছে, যদি এটি আপনার নিজের শ্রেণীর মধ্যে একটি এবং আপনি যে বাহ্যিক কাঠামো ব্যবহার করছেন তার মধ্যে একটির সংঘর্ষ হয় তবে আপনি সহজেই আপনার শ্রেণির নাম পরিবর্তন করতে পারেন, কোনও বড় বিষয় নয়। তবে আপনি যদি দুটি বাহ্যিক ফ্রেমওয়ার্ক ব্যবহার করেন তবে উভয় ফ্রেমওয়ার্ক যা আপনার উত্স নেই এবং আপনি পরিবর্তন করতে পারবেন না? আপনার অ্যাপ্লিকেশনটি উভয়ের সাথে লিঙ্ক করে এবং আপনি নাম দ্বন্দ্ব পান। কীভাবে আপনি এগুলি সমাধান করবেন? তাদের চারপাশে এমনভাবে কাজ করার সর্বোত্তম উপায় কী যে আপনি এখনও উভয় ক্লাস ব্যবহার করতে পারেন?
সিতে আপনি সরাসরি লাইব্রেরির সাথে সংযুক্ত না হয়ে এগুলির চারপাশে কাজ করতে পারেন, পরিবর্তে আপনি রানটাইমের সময় লাইব্রেরিটি লোডেন () ব্যবহার করে লোড করেন, তারপরে আপনি যে প্রতীকটি সন্ধান করছেন সন্ধান করুন dlsym () ব্যবহার করে এবং এটি একটি বিশ্বব্যাপী প্রতীককে নির্ধারণ করুন (যে আপনি আপনার যে কোনও উপায়ে নাম লিখতে পারেন) এবং তারপরে এটি বিশ্বব্যাপী প্রতীকটির মাধ্যমে অ্যাক্সেস করুন। উদাহরণস্বরূপ, যদি আপনার কোনও বিরোধ থাকে কারণ কিছু সি লাইব্রেরির ফাংশন ওপেন () নামে থাকে তবে আপনি মাইওপেন নামের একটি ভেরিয়েবলটি সংজ্ঞায়িত করতে পারেন এবং এটি লাইব্রেরির খোলা () ফাংশনটির দিকে নির্দেশ করতে পারেন, সুতরাং আপনি যখন সিস্টেমটি উন্মুক্ত () ব্যবহার করতে চান , আপনি কেবল উন্মুক্ত () ব্যবহার করেন এবং আপনি অন্যটি ব্যবহার করতে চাইলে আপনি মাইওপেন শনাক্তকারীর মাধ্যমে এটি অ্যাক্সেস করতে পারেন।
উদ্দেশ্য-সি-তেও কি একই রকম কিছু সম্ভব এবং যদি তা না হয়, তবে অন্য কোনও চালক, কূটকৌশলযুক্ত সমাধান কি আপনি নামটির জায়গার বিরোধগুলি সমাধান করতে পারবেন? কোন ধারনা?
হালনাগাদ:
কেবল এটি স্পষ্ট করার জন্য: যে উত্তরগুলি কীভাবে আগে থেকেই নেমস্পেসের সংঘর্ষগুলি এড়ানো যায় বা কীভাবে একটি আরও ভাল নামস্থান তৈরি করা যায় তা অবশ্যই স্বাগত জানায়; তবে তারা আমার সমস্যার সমাধান না করায় আমি তাদের উত্তর হিসাবে গ্রহণ করব না । আমার দুটি গ্রন্থাগার রয়েছে এবং তাদের শ্রেণির নাম সংঘর্ষে লিপ্ত হয়। আমি তাদের পরিবর্তন করতে পারি না; আমার একটিরও উত্স নেই। সংঘর্ষটি ইতিমধ্যে রয়েছে এবং এটি আগে থেকে কীভাবে এড়ানো যেত তার টিপস আর সাহায্য করবে না। আমি তাদের এই ফ্রেমওয়ার্কগুলির বিকাশকারীদের কাছে ফরোয়ার্ড করতে পারি এবং আশা করি তারা ভবিষ্যতে আরও ভাল নামের জায়গাটি বেছে নেবে, তবে আপাতত আমি একক প্রয়োগের মধ্যে এই মুহূর্তে ফ্রেমওয়ার্কগুলি নিয়ে কাজ করার একটি সমাধান অনুসন্ধান করছি। এটি সম্ভব করার কোনও সমাধান?