আমি অন্যদের সাথে একমত - এটি নাম সংঘর্ষ, অস্পষ্টতা জিজ্ঞাসা করছে এবং তারপরে সত্যটি কম স্পষ্ট হয়। আমি এর ব্যবহার দেখতে পাচ্ছি using
, তবে আমার ব্যক্তিগত পছন্দটি এটি সীমাবদ্ধ করা। আমি আরও দৃ pointed়ভাবে বিবেচনা করব কিছু অন্যরা কী বলেছিল:
আপনি যদি একটি ফাংশন নাম মোটামুটি ভাল নাম হতে পারে এটি করতে চান, কিন্তু আপনি শুধুমাত্র এটা খুঁজে পেতে চান std
নামস্থান (অথবা বিপরীত - আপনি সব কল যে পরিবর্তন করতে চান না নামস্থানে std
, নামস্থান X
, ...), তাহলে আপনি কীভাবে এটি করার প্রস্তাব করবেন?
আপনি এটি করার জন্য একটি প্রোগ্রাম লিখতে পারেন, তবে আপনার প্রকল্পটি বজায় রাখতে কোনও প্রোগ্রাম লেখার চেয়ে নিজের প্রকল্পে নিজেই সময় কাটানো ভাল হবে না?
ব্যক্তিগতভাবে, আমি প্রকৃতপক্ষে কিছু মনে করি না std::
। আমি চেহারা না এটি চেয়ে বেশি পছন্দ। আমি জানি না কারণ এটি সুস্পষ্ট এবং আমাকে বলে যে এটি "আমার কোড নয় ... আমি স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করছি" বা যদি এটি অন্য কিছু হয় তবে আমার মনে হয় এটি আরও সুন্দর দেখাচ্ছে। এই মাত্রায় অদ্ভুত হতে পারে যে আমি সম্প্রতি সি ++ এ এসেছি (ব্যবহৃত হয়েছে এবং এখনও সি এবং অন্যান্য ভাষাগুলি দীর্ঘকাল ধরে চালায় এবং সি আমার সমাবেশের ঠিক উপরে, সর্বদা আমার প্রিয় ভাষা)।
উপরের সাথে কিছুটা সম্পর্কিত এবং অন্যরা কী বলেছে এটি অন্য একটি জিনিস আছে। যদিও এটি খারাপ অনুশীলন হতে পারে, আমি মাঝে মাঝে std::name
স্ট্যান্ডার্ড লাইব্রেরি সংস্করণ এবং প্রোগ্রাম-নির্দিষ্ট প্রয়োগের জন্য নাম সংরক্ষণ করি । হ্যাঁ, প্রকৃতপক্ষে এটি আপনাকে কামড়াতে পারে এবং আপনাকে কঠোর কামড় দিতে পারে, তবে এটিই নেমে আসে যে আমি এই প্রকল্পটি শুরু থেকেই শুরু করেছি এবং আমি এর জন্য কেবলমাত্র প্রোগ্রামার। উদাহরণ: আমি ওভারলোড করে std::string
এটিকে কল করি string
। আমার সহায়ক সংযোজন রয়েছে। ছোট অংশের নামগুলির প্রতি আমার সি এবং ইউনিক্স (+ লিনাক্স) প্রবণতার কারণে আমি এটি কিছু অংশে করেছি।
তদতিরিক্ত, আপনার নামের স্থানের উপাধি থাকতে পারে। এখানে এটি কার্যকর যেখানে এর উল্লেখ নাও করা যেতে পারে তার উদাহরণ রয়েছে। আমি সি ++ 11 স্ট্যান্ডার্ড এবং বিশেষত libstdc ++ ব্যবহার করি। ঠিক আছে, এটির সম্পূর্ণ std::regex
সমর্থন নেই। অবশ্যই, এটি সংকলন করে তবে এটি প্রোগ্রামারের শেষদিকে ত্রুটি হওয়ার প্রান্তে এটি ব্যতিক্রম করে। তবে তা বাস্তবায়নের অভাব।
সুতরাং আমি এখানে এটি কীভাবে সমাধান করেছি। বুস্টের রেজেক্স ইনস্টল করুন এবং এটিতে লিঙ্ক করুন Then তারপরে, আমি নিম্নলিখিতটিগুলি করি যাতে যখন libstdc ++ এটি সম্পূর্ণরূপে বাস্তবায়িত হয় তখন আমার কেবল এই ব্লকটি সরিয়ে নেওয়া দরকার এবং কোডটি একই থাকবে:
namespace std
{
using boost::regex;
using boost::regex_error;
using boost::regex_replace;
using boost::regex_search;
using boost::regex_match;
using boost::smatch;
namespace regex_constants = boost::regex_constants;
}
এটি একটি খারাপ ধারণা কিনা তা নিয়ে আমি তর্ক করব না। তবে আমি যুক্তি দিয়ে বলব যে এটি আমার প্রকল্পের জন্য এটি পরিষ্কার রাখে এবং একই সাথে এটি নির্দিষ্ট করে তোলে: সত্য, আমাকে বুস্ট ব্যবহার করতে হবে, তবে আমি এটি লাইবস্টডিসি ++ এর মতো ব্যবহার করব eventually হ্যাঁ, আপনার নিজের প্রকল্প শুরু করা এবং একেবারে শুরুতে একটি স্ট্যান্ডার্ড (...) দিয়ে শুরু করা রক্ষণাবেক্ষণ, বিকাশ এবং প্রকল্পের সাথে জড়িত সমস্ত কিছুতে সহায়তা করার সাথে অনেক দীর্ঘ পথ চলে যায়!
কেবল কিছু স্পষ্ট করার জন্য: আমি আসলে এসটিএলে ইচ্ছাকৃতভাবে এবং আরও নির্দিষ্ট জায়গায় নির্দিষ্ট করে কোনও শ্রেণির নাম / নাম ব্যবহার করা ভাল ধারণা বলে মনে করি না । আমার জন্য স্ট্রিংটি ব্যতিক্রম (প্রথমটি, উপরে, বা দ্বিতীয়টি এখানে উপেক্ষা করুন, আপনার অবশ্যই প্রয়োজন হলে শোধ করুন) কারণ আমি 'স্ট্রিং' ধারণাটি পছন্দ করি না।
যেমনটি হ'ল, আমি এখনও সি এর প্রতি খুব পক্ষপাতী এবং সি ++ এর বিরুদ্ধে পক্ষপাতদুষ্ট। বিশদ বিবরণ, আমি যা কাজ করি তার বেশিরভাগই সি-তে ফিট করে (তবে এটি একটি ভাল অনুশীলন এবং নিজেকে একটি করে গড়ে তোলার একটি ভাল উপায় ছিল another অন্য ভাষা শেখা এবং খ। অবজেক্ট / শ্রেণি / ইত্যাদির বিরুদ্ধে কম পক্ষপাতদুষ্ট না হওয়ার চেষ্টা করুন যা সম্ভবত আরও ভাল বর্ণিত হয়েছে) যতটা নিবিড়, কম অহংকারী এবং আরও গ্রহণযোগ্য) তবে দরকারীটি হ'ল কিছু যা ইতিমধ্যে পরামর্শ দিয়েছিল: আমি প্রকৃতপক্ষে তালিকাটি ব্যবহার করি (এটি মোটামুটি জেনারিক, তাই না?), এবং দু'জনের নাম সারণি করুন (একই জিনিস) যা যদি আমি করি তবে নাম সংঘর্ষের কারণ হয়ে দাঁড়ায় using namespace std;
, এবং তাই সে লক্ষ্যে আমি নির্দিষ্ট হওয়া পছন্দ করি, নিয়ন্ত্রণে এবং জেনেও যে আমি যদি এটি মানক ব্যবহারের উদ্দেশ্যে করি তবে আমাকে এটি নির্দিষ্ট করতে হবে। সহজভাবে রাখুন: অনুমান করার অনুমতি নেই।
এবং বুস্টের রেজেক্সের অংশ তৈরির জন্য std
। আমি ভবিষ্যতের সংহতকরণের জন্য এটি করি এবং - আবারও, আমি পুরোপুরি স্বীকার করি এটি পক্ষপাতিত্ব - আমি মনে করি না এটি এতটা কুৎসিত boost::regex:: ...
। আসলে, এটি আমার জন্য অন্য জিনিস। সি ++ তে এমন অনেকগুলি বিষয় রয়েছে যা আমি এখনও চেহারা এবং পদ্ধতিগুলিতে পুরোপুরি গ্রহণ করতে পারি নি (অন্য উদাহরণ: ভেরিয়েডিক টেম্পলেট বনাম ভার আর্গুমেন্টগুলি [যদিও আমি স্বীকার করি যে ভেরিয়েডিক টেম্পলেটগুলি খুব দরকারী!])। এমনকি আমি এগুলি গ্রহণ করি তাও কঠিন ছিল এবং তাদের সাথে আমার এখনও সমস্যা আছে।