সি [বন্ধ] এ ভেরিয়েবল এবং ফাংশনের জন্য ব্যবহৃত নামকরণের সম্মেলনগুলি


13

সিআই-তে একটি বৃহত প্রকল্প কোডিংয়ের সময় একটি সমস্যার মুখোমুখি হয়েছিল। আমি যদি আরও কোড লিখতে থাকি তবে এমন একটি সময় আসবে যখন কোডটি সংগঠিত করা আমার পক্ষে কঠিন হবে। আমি বলতে চাইছি যে প্রোগ্রামের বিভিন্ন অংশের জন্য ফাংশন এবং ভেরিয়েবলের নামকরণ মিশ্রিত বলে মনে হতে পারে।

সুতরাং আমি ভাবছিলাম যে সি নামক কনভেনশনগুলি কি আমি সি ভেরিয়েবল এবং ফাংশনগুলির জন্য ব্যবহার করতে পারি?

বেশিরভাগ ভাষা একটি নামকরণের সম্মেলনের পরামর্শ দেয়। তবে সি এর জন্য আমি এখন পর্যন্ত কেবলমাত্র পড়েছি নামগুলি কোড পঠনযোগ্যতার জন্য বর্ণনামূলক হওয়া উচিত।

সম্পাদনা করুন:

প্রস্তাবিত নামকরণ কনভেনশনগুলির কয়েকটি উদাহরণের উদাহরণ:

আমি কোথাও জাভাটির জন্য আরও কিছু নামকরণের সম্মেলন পড়েছি কিন্তু কোথায় ছিল তা মনে করতে পারছি না।


প্রস্তাবিত নামকরণের কনভেনশন সহ ভাষার কয়েকটি উদাহরণ উল্লেখ করুন। এবং যেখানে আমরা সেই নামকরণের সম্মেলনগুলি পেতে পারি।
ফিলিপ

ফিলিপ যুক্ত উদাহরণ
অসীম বানসাল

1
আপনি গ্লোবাল ব্যবহার না করায় ভেরিয়েবলগুলির সাথে সমস্যা হওয়া উচিত নয়। এবং ফাংশন নামের জন্য: যদি মডিউলটির নাম হয় তবে order.cআপনি ফাংশনগুলির নামকরণ করতে পারেন order_add(), order_del()এবং এই জাতীয়। পুরানো সিস্টেমগুলি থাকতে পারে যা আপনাকে জানায় যে নামটি প্রথম 8 টি অক্ষরের মধ্যেই অনন্য হতে হবে। আপনি C ++ পরে দুর্ঘটনা দ্বারা পাল্টাবেন, তখন আপনি লিখতে পছন্দ করবেন order::add()এবং order::del()তারপর।
অট--

উত্তর:


17

আমি যদি আরও কোড লিখতে থাকি তবে এমন একটি সময় আসবে যখন কোডটি সংগঠিত করা আমার পক্ষে কঠিন হবে।

এটি আপনার সমস্যা: সংস্থাকে সঠিকভাবে পান এবং শৈলীটি আরও সহজে প্রবাহিত হওয়া উচিত।

আপনার কোডটি সংগঠিত করার জন্য অপেক্ষা করবেন না : আপনার কোডটি আপনার যেতে যেতে সংগঠিত রাখুন। যদিও ভাষাটি এটি আপনার জন্য না করে, কোডটি এখনও কম সংযুক্তি এবং উচ্চ সংহতি সহ মডিউলগুলিতে व्यवस्थित করা উচিত।

এই মডিউলগুলি পরে স্বাভাবিকভাবে একটি নাম স্থান সরবরাহ করে। সংঘর্ষ এড়াতে মডিউলটির নাম (যদি এটি দীর্ঘ হয়) এবং উপস্থাপিত ফাংশন নামগুলি তাদের মডিউলটির সাথে সংযুক্ত করে।

স্বতন্ত্র সনাক্তকারীদের পর্যায়ে এগুলি মোটামুটি সাবজেক্টিভিটির ক্রমবর্ধমান ক্রম:

  1. একটি সম্মেলন বাছাই এবং এটি দিয়ে লাঠি
    • যেমন, function_like_this(struct TypeLikeThis variable)সাধারণ
  2. অবশ্যই হাঙ্গেরীয় স্বরলিপি এড়ানো (দুঃখিত জেএনএল)

    • যদি না আপনি এটিকে মূল উদ্দেশ্য হিসাবে ব্যবহার করতে ইচ্ছুক হন, যার অর্থ ভয়ঙ্কর সিস্টেমগুলির সংস্করণের চেয়ে সিমোনির অ্যাপস সংকেত

      কেন? আমি এই সম্পর্কে একটি রচনা লিখতে পারে, তবে আমি পরিবর্তে আপনাকে জোয়েল স্পলস্কির এই নিবন্ধটি পড়ার পরামর্শ দিচ্ছি এবং আপনার আগ্রহী হলে আরও কিছু খোঁজাখুঁজি করব। নীচে সিমোনির মূল কাগজের সাথে একটি লিঙ্ক রয়েছে।

  3. পয়েন্টার টাইপএফগুলি এড়িয়ে চলুন যতক্ষণ না তারা সত্যিকারেরভাবে অস্বচ্ছ কুকি ধরণের হয় - তারা কেবল জিনিসগুলিকেই বিভ্রান্ত করে

    struct Type *ok;
    typedef struct Type *TypePtr;
    TypePtr yuck;

    অস্বচ্ছ কুকি ধরণের দ্বারা আমি কী বুঝি ? আমি বলতে চাইছি মডিউল (বা গ্রন্থাগার, বা যা কিছু) এর অভ্যন্তরে এমন কিছু ব্যবহার করা হয়েছে যা ক্লায়েন্ট কোডে পাস করতে হবে, তবে সেই ক্লায়েন্ট কোডটি সরাসরি ব্যবহার করতে পারে না । এটি কেবল এটি লাইব্রেরিতে ফিরিয়ে দেয়।

    উদাহরণস্বরূপ, একটি ডাটাবেস লাইব্রেরি মত একটি ইন্টারফেস এক্সপোজ হতে পারে

    /* Lots of buffering, IPC and metadata magic held in here.
       No, you don't get to look inside. */
    struct DBContextT;
    /* In fact, you only ever get a pointer, so let's give it a nice name */
    typedef struct DBContexT *DBContext;
    
    DBContext db_allocate_context(/*maybe some optional flags?*/);
    void db_release_context(DBContext);
    int db_connect(DBContext, const char *connect);
    int db_disconnect(DBContext);
    int db_execute(DBContext, const char *sql);

    এখন, প্রসঙ্গটি ক্লায়েন্ট কোডের কাছে অস্বচ্ছ , কারণ আপনি ভিতরে দেখতে পারেন না। আপনি কেবল এটি লাইব্রেরিতে ফিরিয়ে দিন। এর মতো কিছু FILEহ'ল অস্বচ্ছ, এবং একটি পূর্ণসংখ্যার ফাইল বর্ণনাকারীও একটি কুকি , তবে অস্বচ্ছ নয়।


নকশায় একটি নোট

আমি ব্যাখ্যা ছাড়াই উপরে কম সংযুক্তি এবং উচ্চ সংহতি বাক্যাংশটি ব্যবহার করেছি এবং এ সম্পর্কে আমি কিছুটা খারাপ অনুভব করছি। আপনি এটি অনুসন্ধান করতে পারেন, এবং সম্ভবত কিছু ভাল ফলাফল খুঁজে পেতে পারেন, তবে আমি এটি সংক্ষেপে সম্বোধন করার চেষ্টা করব (আবার, আমি একটি রচনা লিখতে পারলাম তবে চেষ্টা করব না)।

উপরের স্কেচ করা ডিবি লাইব্রেরিটি কম সংযোগ দেখায় কারণ এটি বাইরের বিশ্বে একটি ছোট ইন্টারফেস প্রকাশ করে। এর বাস্তবায়নের বিশদগুলি আংশিকভাবে আংশিকভাবে অস্বচ্ছ কুকি কৌশলটি গোপন করে, ক্লায়েন্ট কোডগুলি সেই বিবরণগুলির উপর নির্ভর করতে আসতে বাধা দেয়।

অস্বচ্ছ কুকির পরিবর্তে কল্পনা করুন, আমরা প্রসঙ্গ কাঠামো ঘোষণা করি যাতে এর বিষয়বস্তু দৃশ্যমান হয় এবং এতে ডাটাবেসের সাথে টিসিপি সংযোগের জন্য সকেট ফাইল বর্ণনাকারী অন্তর্ভুক্ত থাকে। যদি আমরা পরে ডিবি একই মেশিনে চলতে থাকে তখন ভাগ করা মেমরি বিভাগ ব্যবহার করে সমর্থন বাস্তবায়নে পরিবর্তন করি তবে ক্লায়েন্টকে কেবল পুনরায় সংযুক্ত করার পরিবর্তে পুনরায় সংকলন করা দরকার। আরও খারাপ, ক্লায়েন্ট ফাইল বর্ণনাকারী ব্যবহার শুরু করতে পারে , উদাহরণস্বরূপ setsockoptডিফল্ট বাফার আকার পরিবর্তন করার জন্য কল করা, এবং এখন এটির জন্য একটি কোড পরিবর্তনও দরকার। এই সমস্ত বিবরণটি আমাদের মডিউলটির ভিতরে লুকানো উচিত যেখানে ব্যবহারিক এবং এটি মডিউলগুলির মধ্যে কম সংযোগ দেয় ।

উদাহরণটি উচ্চ সংহতিও দেখায় , মডিউলের সমস্ত পদ্ধতি একই কাজ (ডিবি অ্যাক্সেস) এর সাথে সম্পর্কিত। এর অর্থ এই যে শুধুমাত্র কোডটি চাহিদা বাস্তবায়ন বিবরণ সম্পর্কে জানতে (যে, আমাদের কুকির বিষয়বস্তু) প্রকৃতপক্ষে সেগুলির অ্যাক্সেস দেওয়া, যা ডিবাগ সহজসাধ্য।

আপনি আরও দেখতে পারেন যে একক উদ্বেগ থাকার কারণে এই ফাংশনগুলিকে একসাথে ভাগ করে নেওয়ার জন্য উপসর্গটি বেছে নেওয়া সহজ হয়েছিল।

এখন, এই উদাহরণটি ভাল বলা সহজ (বিশেষত এটি সম্পূর্ণ না হলেও) তবে অবিলম্বে আপনাকে সহায়তা করে না। কৌশলটি হ'ল আপনার কোডটি লেখার সময় এবং প্রসারিত করার সাথে সাথে একই কাজ করে বা একই ধরণের (যা তাদের নিজস্ব মডিউলের জন্য প্রার্থী হতে পারে) কাজ করে এমন ফাংশনগুলির জন্য, এবং এমন অনেকগুলি পৃথক কাজ করে যা ফাংশনগুলি না করে ' টি সত্যিই সম্পর্কিত নয়, এবং বিভাজনের জন্য প্রার্থী হতে পারে।


আপনি আমাকে বুঝতে সাহায্য করতে পারেন যে কেন হাঙ্গেরিয়ান এড়ানো হয়? এটি সম্পর্কে আরও জানতে আগ্রহী। :)
জেএনএল

@ জেএনএল: সঠিকভাবে ব্যাখ্যা করার জন্য একটি মন্তব্য খুব ছোট। আমি আপনাকে এটি একটি নতুন প্রশ্ন হিসাবে পোস্ট করার পরামর্শ দিচ্ছি।
বার্ট ভ্যান ইনজেন শেেনা

with low coupling and high cohesion। ওটার মানে কি? এবং দয়া করে অস্বচ্ছ কুকি ধরণের সম্পর্কে ব্যাখ্যা করুন। এর অর্থ কী তা আমার কোনও ধারণা নেই।
অসীম বানসাল

আমি উভয় সংক্ষেপে সম্বোধন করার চেষ্টা করেছি, এবং স্পষ্টভাবে সংকোচনে ব্যর্থ। আশা করি এটি যদিও আপনার শুরু করা উচিত।
অকেজো

আমি কয়েক দিন পরে উত্তর দিচ্ছি। তার জন্য দুঃখিত। আমি আপনার বিবরণ পড়ুন low coupling and high cohesion। সুতরাং এটির মূলত আমি যখন পারি তখন জিনিসগুলি encapsulate এর অর্থ হয় এবং এটি এমনভাবে করা উচিত যাতে ফাংশনগুলির যেগুলির প্রয়োজন আসলে অ্যাক্সেস হওয়া উচিত। কিছু জিনিস আমার মাথার উপর দিয়ে গেছে তবে এখনও আমি মনে করি আপনার বক্তব্যটি আমি পেয়েছি।
অসীম বানসাল

5

আমার মতে আপনি যদি তিনটি বিষয় মাথায় রাখেন তবে 90% নামকরণ সমস্যার সমাধান হয়ে যায়: ক) আপনার পরিবর্তনশীল এবং ফাংশনটির নাম যথাসম্ভব বর্ণনামূলক করে তুলুন, খ) আপনার কোডের পুরো অংশে সামঞ্জস্য বজায় রাখুন (যদি কোনও ফাংশনটির নাম নামকরণ করা হয়, একটি) দ্বিতীয় ফাংশনটির নাম মাল্টিপলিং নাম্বার রাখা উচিত এবং সংখ্যাগুলি নয় মুল) এবং গ) সম্ভব হলে নামগুলি সংক্ষিপ্ত করার চেষ্টা করুন, কারণ আমাদের সেগুলি টাইপ করা দরকার।

বলা হচ্ছে যে আপনি যদি এই বিষয়টির অন্যান্য দিকগুলি একবার দেখতে চান তবে নামকরণ কনভেনশনগুলির উইকিপিডিয়া পৃষ্ঠায় আপনার মনে রাখা উচিত এমন জিনিসের একটি ভাল তালিকা রয়েছে। এটির সি এবং সি ++ এর একটি সেকশনও রয়েছে:

সি এবং সি ++ তে, কীওয়ার্ড এবং স্ট্যান্ডার্ড লাইব্রেরি শনাক্তকারীরা বেশিরভাগ ছোট হাতের অক্ষরে থাকে। সি স্ট্যান্ডার্ড লাইব্রেরিতে সংক্ষিপ্ত নামগুলি সর্বাধিক প্রচলিত (যেমন একটি অক্ষর বর্ণানুক্রমিক কিনা তা পরীক্ষা করার জন্য ইসলনাম), যখন সি ++ স্ট্যান্ডার্ড লাইব্রেরি প্রায়শই একটি শব্দ বিভাজক হিসাবে আন্ডারস্কোর ব্যবহার করে (যেমন_আউট_আরঞ্জ)। ম্যাক্রোর প্রতিনিধিত্বকারী শনাক্তকারীরা কনভেনশন অনুসারে কেবলমাত্র বড় হাতের অক্ষর এবং আন্ডারস্কোর ব্যবহার করে লেখা হয় (এটি কনস্ট্যান্টগুলির সাথে অল-আপার-কেস সনাক্তকারী ব্যবহার করার বহু প্রোগ্রামিং ভাষায় কনভেনশনের সাথে সম্পর্কিত)। ডাবল আন্ডারস্কোর এবং একটি আন্ডারস্কোর এবং মূলধন পত্র দিয়ে শুরু করে নামগুলি বাস্তবায়নের জন্য সংরক্ষিত (সংকলক, মানক গ্রন্থাগার) এবং ব্যবহার করা উচিত নয় (যেমন সংরক্ষিত__ বা _ সংরক্ষিত) [[5] []] এটি স্তম্ভের মতো পৃষ্ঠের মতো, তবে শব্দার্থবিজ্ঞানের পার্থক্য রয়েছে:


3
"সম্ভব হলে নামগুলি সংক্ষিপ্ত করার চেষ্টা করুন" স্বতঃ-সমাপ্তির সাথে একটি আইডিই ব্যবহার করুন, তবে আপনার ফাংশনটির নামগুলি দীর্ঘ এবং বর্ণনামূলক হতে পারে যতক্ষণ আপনার কেবল একবার টাইপ করা দরকার।
জোয়েল

1
@ জোয়েল ভয়ানক পরামর্শ। সবাই আপনার মতো একই আইডিই ব্যবহার করবে না।
জেমস

6
@ জেমস তাদের প্রয়োজন নেই, তারা কেবল কোনও শালীন আইডিই ব্যবহার করতে পারেন। তারপরে আপনাকে উত্পাদনশীলতার জন্য স্বচ্ছতার ত্যাগ করতে হবে না।
জোয়েল

আইডিই শব্দটি এখন কিছু দিন পাতলা হয়েছে। প্রযুক্তিগতভাবে নোটপ্যাড ++ হ'ল একটি আইডিই কারণ আপনি এটি আপনার প্রকল্পটি সংকলন করতে এবং পরিচালনা করতে কনফিগার করতে পারেন তবে এটি মূলত একটি পাঠ্য সম্পাদক। এবং এটি স্বয়ংক্রিয়ভাবে পূর্ণ হয়।
ফিলিপ

5

সি-তে একমাত্র কঠোর সীমাবদ্ধতা হ'ল কোনও নামস্থান নেই। সুতরাং, rename()আপনার ফাইল সিস্টেম লাইব্রেরির rename()ক্রিয়াকে আপনার মিডিয়া লাইব্রেরির কার্যকারিতা থেকে আলাদা করার জন্য আপনাকে একটি উপায় খুঁজতে হবে । সাধারণ সমাধানটি একটি উপসর্গ, যেমন: filesystem_rename()এবং media_rename()

অন্যান্য সাধারণ পরামর্শটি হ'ল: কোনও প্রকল্প বা দলের মধ্যে ধারাবাহিক থাকুন। পাঠযোগ্যতার উন্নতি হবে।


+1: এটি একটি লাইব্রেরিতে রফতানি প্রতীকগুলির জন্য বিশেষত সত্য। "আমি দুঃখিত, তবে সেই ফাইল সিস্টেম লাইব্রেরি সেই মিডিয়া লাইব্রেরির সাথে যায় না, কারণ উভয়েরই রফতানি ফাংশনটির নতুন নাম রয়েছে।
রেসিডিয়াম

2

আপনি যদি বিশ্বব্যাপী স্বীকৃত ফর্ম্যাটটির সন্ধান করছেন

সিআইএস / সি ++ কোড নামকরণ এবং সংগঠিত করার জন্য মিশ্র / জেএসএফ / অটোসার যেকোন এবং প্রতিটি শিল্প-মানের প্রায় 100% কভার করে। সমস্যাটি হ'ল তারা নিখরচায় ধরে রাখতে পারবে না অর্থাত্ গাইডবোর্ডগুলির প্রতিটি কিছু অর্থ ব্যয় করে। আমি জানি যে মিশ্র 2008 সি / সি ++ কোডিং স্ট্যান্ডার্ড বইয়ের দাম প্রায় 50 মার্কিন ডলার হতে পারে।

আপনি যখন জার্নাল লেখেন তখন আপনি গ্রন্থাগারটি এবং সংযুক্ত পাঠের জন্য হার্ভার্ড রেফারেন্সিং হিসাবে ভাবতে পারেন। আমি মিস্রা ব্যবহার করেছি এবং এটি আপনার ফাংশন এবং ভেরিয়েবলের নামকরণ এবং সঠিক ব্যবহারের জন্য তাদের সংগঠিত করার একটি ভাল উপায়।

আপনি যদি কিছু সময়ের জন্য সন্ধান করছেন

পাইথন এবং জাভার জন্য আপনি যে রেফারেন্স সরবরাহ করেছেন তা ঠিক আছে বলে আমার ধারণা। আমি দেখেছি লোকেরা জাভাদোক স্টাইলটি মন্তব্য, নামকরণ এবং কোডের সংগঠন গ্রহণ করছে। প্রকৃতপক্ষে, আমার শেষ প্রকল্পে, আমাকে জাভা-জাতীয় ফাংশন / পরিবর্তনশীল নামগুলিতে সি ++ কোড লিখতে হয়েছিল। এর পিছনে দুটি কারণ:

1) এটি অনুসরণ করা দৃশ্যত সহজ ছিল।

2) উত্পাদন কোড প্রয়োজনীয়তা সুরক্ষা-সমালোচনামূলক সফ্টওয়্যার সিস্টেমের মানগুলিকে স্পর্শ করেনি।

3) লেগ্যাসি কোডটি (কোনওভাবে) সেই বিন্যাসে ছিল।

4) ডক্সিজেন জাভাদোক সিলেট মন্তব্য করার অনুমতি দেয়। এই মুহুর্তে, আমরা প্রযোজনা লোকদের জন্য ডকুমেন্টেশন উত্পন্ন করতে অক্সিজেন ব্যবহার করছিলাম।

অনেক প্রোগ্রামার এর বিরোধী হতে পারে তবে আমি ব্যক্তিগতভাবে জাভাদোক স্টাইল ফাংশন / ভেরিয়েবল নামকরণ সি / সি ++ এ গ্রহণ করার ক্ষেত্রে কোনও ভুল নেই বলে মনে করি। হ্যাঁ কোর্সের, আপনার প্রবাহ নিয়ন্ত্রণ, থ্রেড সুরক্ষা ইত্যাদির আয়োজনের অনুশীলনগুলিকে নির্বিশেষে সম্বোধন করা দরকার। তবে আমি এখানে আবেদনকারী নই। আপনার প্রডাকশন কোড ফর্ম্যাট প্রয়োজনীয়তা কতটা কঠোর তা আমি জানি না। এটিকে কোনও বিষয়বহির্ভূত অঞ্চলে না ঘটিয়ে, আমি আপনাকে আপনার প্রয়োজনীয়তাগুলি পর্যালোচনা করার, কোনও নির্দিষ্ট নামকরণের সম্মেলনে আপনি কতটা নির্ভরশীল তা নির্ধারণ করার পরামর্শ দিন এবং আমার এবং অন্যের উত্তরগুলিতে উল্লিখিত একটি সমাধান নিয়ে যান suggest

আশা করি এটি সাহায্য করেছে !?


আসলে আমি এটি ব্যক্তিগত সি কোডগুলির জন্য জিজ্ঞাসা করছিলাম। তবে আমি আপনার পরামর্শটি মনে রাখব।
অসীম বানসাল

@ আসিমব্যান্সাল ব্যক্তিগত বা পেশাদার, সেগুলি শেখার পক্ষে ভাল এবং আপনার সিভি লাগানোও ভাল :) .... আপনার উপর নির্ভর করে।
হাগুবিয়ার

0

নামকরণের সময় কয়েকটি গুরুত্বপূর্ণ বিষয় বিবেচনা করা উচিত;

  1. অ্যাকশনঅবজেক্ট বা অবজেক্ট অ্যাকশন প্রকারের দিকে নজর দিন ((সিটির জন্য বস্তু নয় তবে সাধারণভাবে যখন আপনি অন্য অবজেক্ট ওরিয়েন্টেড ল্যাঙ্গুয়েজে যান) এটির সাহায্য করা উচিত

  2. বিশ্রামটি অবশ্যই উপস্থাপক, সংক্ষিপ্ত এবং বর্ণনামূলক হবে।

  3. এছাড়াও, প্রতিটি ভেরিয়েবল এবং ফাংশন সংজ্ঞায়িত করার একক উদ্দেশ্য থাকে, যেমন: যদি এটি কোনও মান অস্থায়ীভাবে সংরক্ষণ করে থাকে তবে এটির জন্য এনটেম্পাল হিসাবে নাম দিন
  4. চলকগুলি বিশেষ্য হতে হবে এবং পদ্ধতিগুলি ক্রিয়া হওয়া উচিত।

6
হাঙ্গেরীয় স্বরলিপি (ধরণের বর্ণকে পরিবর্তনশীল হিসাবে উপস্থাপন করা) ব্যথার শেষ নেই। এটি কৃতজ্ঞতার সাথে বেশিরভাগ ফ্যাশনের বাইরে চলে গেছে।
রোবট

@ স্টেভেনবার্ন্যাপ কেবল কৌতূহলী ছিলেন যে কেন হাঙ্গেরীয় ফর্ম্যাটটি এড়ানো হচ্ছে? আমি বিশ্বাস করি তারা স্কুলে আমাদের এটাই শিখিয়েছিল এবং আমি কিছু কাজের জায়গায়ও এই জাতীয় কোড দেখেছি। কোনটি আপনি হাঙ্গেরিয়ান না হলে সুপারিশ করবেন। ধন্যবাদ
জেএনএল

1
নামকরণের সেরা নামটি একটি মাত্র নিয়মিত ব্যবহৃত হয়, স্পষ্ট, বর্ণনামূলক নামগুলি অতিরিক্ত সংক্ষিপ্ত বিবরণ ছাড়াই এবং অপ্রয়োজনীয় উপসর্গগুলি এড়িয়ে চলা তুলনামূলকভাবে সংক্ষিপ্ত রাখে। হাঙ্গেরীয় স্বীকৃতিতে আসল উপযোগিতা খুব সামান্যই রয়েছে, কোডগুলি পড়া আরও শক্ত করে তোলে এবং পরিবর্তিত প্রকারকে আরও শক্ত করে তোলে।
রোবট

2
এখানে আসল অভিপ্রায় এবং হাঙ্গেরিয়ান নোটেশনটি যে ঘৃণ্য হয়েছে তার বর্ণনা এখানে দেওয়া হয়েছে: joelonsoftware.com/articles/Wrong.html
Residuum

@ রিসিডুম এটি একটি ভাল লিঙ্ক ছিল। অনেক সাহায্য করেছে। এটা প্রশংসা করি.
জেএনএল

0

বেশিরভাগ উত্তরগুলি ভাল, তবে আমি সি ++ বা জাভা যেমন অন্যান্য ভাষায় নেমস্পেস ব্যবহার করার মতো লিবারারি এবং অন্তর্ভুক্ত ফাইলগুলির নামকরণের নামকরণ সম্পর্কে কিছু বলতে চাই:

আপনি যদি একটি লাইব্রেরি তৈরি করেন তবে আপনার রফতানি প্রতীকগুলির জন্য একটি সাধারণ উপসর্গ, যেমন গ্লোবাল ফাংশন, টাইপডেফ এবং ভেরিয়েবলগুলি সন্ধান করুন। এটি অন্যান্য গ্রন্থাগারের সাথে সংঘর্ষ রোধ করবে এবং আপনার কাছ থেকে আগত ফাংশনগুলি সনাক্ত করবে। এটি হাঙ্গেরিয়ান স্বরলিপিগুলির একটি সামান্য বিট।

হতে পারে আরও এগিয়ে যান এবং আপনার রফতানি করা চিহ্নগুলিকে গোষ্ঠী করুন: libcurl বিভিন্ন ইন্টারফেসের জন্য গ্লোবাল প্রতীকগুলির জন্য কার্ল_ *, কার্ল_সায়াসি_ *, কার্ল_মাল্টি_ * এবং কার্ল_শায়ার_ * ব্যবহার করে। সুতরাং সমস্ত ফাংশনের জন্য কার্ল_ * ব্যবহার করার পাশাপাশি, তারা বিভিন্ন ইন্টারফেসের জন্য "নেমস্পেসস" এর আরও একটি স্তর যুক্ত করেছে: একটি কার্ল_মাল্টি_ * ফাংশনটিতে কার্ল_ম্যাসিটি * ফাংশন কল করা এখন ভুল দেখাচ্ছে, HTTP: // কার্লের ফাংশনের নামগুলি দেখুন । haxx.se/libcurl/c/

রফতানি প্রতীকগুলির নিয়মগুলি #includeবজায় রেখে আপনার এডি ফাইলগুলিতে স্থির ফাংশনগুলির জন্য এটি ব্যবহার করা উচিত : এই ফাংশনগুলির জন্য একটি সাধারণ উপসর্গ সন্ধান করার চেষ্টা করুন। "মাই_স্ট্রিং" নামক কোনও ফাইলে আপনার স্ট্যাটিক স্ট্রিং ইউটিলিটি ফাংশন থাকতে পারে? মাই_স্ট্রিং_ * এর সাথে এই সমস্ত ফাংশনটির উপসর্গ করুন।


রফতানি চিহ্ন দ্বারা আপনি গ্লোবাল ভেরিয়েবল, ফাংশন, টাইপডেফস ইত্যাদির অর্থ যদি আমি সঠিক হন। রফতানি করা প্রতীকগুলি গ্রুপিং সম্পর্কে আপনি কি কিছুটা ব্যাখ্যা করতে পারেন? আমি ভেবেছিলাম আপনি এটি ইতিপূর্বে অনুচ্ছেদে ব্যাখ্যা করেছেন। তৃতীয় অনুচ্ছেদে আপনি কী যুক্ত করেছেন?
অসীম বানসাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.