আমি সি ++ থেকে জাভা এবং সি # তে স্যুইচ করেছি এবং মনে করি সেখানে নামস্থান / প্যাকেজগুলির ব্যবহার আরও ভাল (ভাল কাঠামোগত)। তারপরে আমি সি ++ এ ফিরে এসে একইভাবে নেমস্পেসগুলি ব্যবহার করার চেষ্টা করেছি তবে শিরোনাম ফাইলের মধ্যে প্রয়োজনীয় সিনট্যাক্সটি ভয়ঙ্কর।
namespace MyCompany
{
namespace MyModule
{
namespace MyModulePart //e.g. Input
{
namespace MySubModulePart
{
namespace ...
{
public class MyClass
নিম্নলিখিতটি আমার কাছেও অদ্ভুত বলে মনে হচ্ছে (গভীর ইনডেন্ট এড়ানোর জন্য):
namespace MyCompany
{
namespace MyModule
{
namespace MyModulePart //e.g. Input
{
namespace MySubModulePart
{
namespace ...
{
public class MyClass
{
উপরোক্ত বিষয়টি প্রকাশ করার জন্য কি আরও একটি ছোট উপায় আছে? আমি এরকম কিছু মিস করছি
namespace MyCompany::MyModule::MyModulePart::...
{
public class MyClass
হালনাগাদ
ঠিক আছে, কেউ বলেছেন জাভা / সি # এবং সি ++ এ ব্যবহারের ধারণাটি ভিন্ন। সত্যি? আমি মনে করি (গতিশীল) শ্রেণি লোডিং কেবলমাত্র নামস্থানগুলির জন্য উদ্দেশ্য নয় (এটি একটি খুব প্রযুক্তিগত যুক্তিযুক্ত দৃষ্টিভঙ্গি)। আমি কেন এটি পঠনযোগ্যতা এবং কাঠামোগত ব্যবহারের জন্য ব্যবহার করব না, যেমন "ইন্টেলিজেন্স" ভাবেন।
বর্তমানে, কোনও নেমস্পেস এবং সেখানে আপনি কী খুঁজে পেতে পারেন তার মধ্যে কোনও যুক্তি / আঠালো নেই। জাভা এবং সি # এটি আরও ভাল করে ... কেন নাম স্থান সহ <iostream>
এবং থাকার std
? ঠিক আছে, যদি আপনি বলে যুক্তিবিজ্ঞান হেডার উপর নির্ভর করা উচিত নয় অন্তর্ভুক্ত করা কেন #include মত একটি "IntelliSense" বন্ধুত্বপূর্ণ সিনট্যাক্স ব্যবহার না করে #include <std::io::stream>
বা <std/io/stream>
? আমি মনে করি জাভা / সি # এর তুলনায় ডিফল্ট লাইবগুলিতে হারিয়ে যাওয়া কাঠামোগত C ++ এর একটি দুর্বলতা।
যদি বিবাদ বিবাদের পক্ষে স্বতন্ত্রতা এক পয়েন্ট হয় (যা সি # এবং জাভাও একটি বিন্দু) তবে প্রকল্পের নাম বা সংস্থার নামটিকে নামস্থান হিসাবে ব্যবহার করা ভাল ধারণা, আপনি কি তা মনে করেন না?
একদিকে বলা হয়ে থাকে যে সি ++ সবচেয়ে নমনীয় ... তবে সবাই বলেছে "এটি করবেন না"? আমার কাছে মনে হচ্ছে সি ++ অনেক কিছু করতে পারে তবে সি # এর তুলনায় অনেক ক্ষেত্রে সর্বাধিক সহজ জিনিসগুলির জন্য এমনকি একটি ভয়ঙ্কর বাক্য গঠন রয়েছে।
আপডেট 2
বেশিরভাগ ব্যবহারকারী বলেছেন দুটি স্তরের চেয়ে আরও গভীর নীড় তৈরি করা বাজে কথা। ঠিক আছে, তাহলে উইন্ডোজ :: ইউআই :: জ্যামাল এবং উইন্ডোজ :: ইউআই :: এক্সামল :: নিয়ন্ত্রণগুলি :: উইন 8 বিকাশের প্রিমিটিভস নেমস্পেস? আমি মনে করি মাইক্রোসফ্টের নেমস্পেসের ব্যবহারটি অর্থবোধ করে এবং এটি সত্য মাত্র 2 স্তরের চেয়ে গভীর। আমি মনে করি বড় লাইব্রেরি / প্রকল্পগুলির আরও গভীর বাসা বাঁধার দরকার (আমি এক্সট্রাওলংক্লাসনেমব্যাকজ্যাওয়ারি থাইটিংআইসইসনেমনেসস্পেসের মতো শ্রেণির নামগুলি ঘৃণা করি ... তবে আপনি সমস্ত কিছু বিশ্বব্যাপী নেমস্পেসেও স্থাপন করতে পারেন))
আপডেট 3 - উপসংহার
বেশিরভাগ বলে "এটি করবেন না", তবে ... এমনকি বুস্টের আরও গভীর বাসা বাঁধতে থাকে তবে এক বা দুটি স্তর থাকে। হ্যাঁ, এটি একটি গ্রন্থাগার তবে: আপনি যদি পুনঃব্যবহারযোগ্য কোড চান - আপনার নিজের কোডটিকে লাইব্রেরির মতো আচরণ করুন আপনি অন্য কাউকে দেবেন। নেমস্পেসগুলি ব্যবহার করে আবিষ্কারের উদ্দেশ্যে আমি আরও গভীর বাসা ব্যবহার করি।
namespace
কীওয়ার্ডের অপব্যবহার ?