এক্সটেনশন ছাড়াই সি ++ হেডার ফাইল থাকা কি একটি ভাল অনুশীলন?


9

আমার একটি কলেজের সাথে সি ++ নির্দেশিকা অনুসরণ করতে হবে তার সাথে আমার একটি যুক্তি রয়েছে।

তিনি বর্তমানে তাঁর সমস্ত লাইব্রেরি সেভাবে ডিজাইন করেছেন:

  • তিনি তার ফাইলের নামগুলিতে অসম্পূর্ণভাবে বড় হাতের এবং ছোট হাতের অক্ষর ব্যবহার করেন
  • তাঁর কয়েকটি শিরোনামের কোনও এক্সটেনশন নেই

আমি বিশ্বাস করি যে কোনও এক্সটেনশন না থাকাই সি ++ স্ট্যান্ডার্ড ফাইলগুলির জন্য সংরক্ষিত কিছু এবং বড় হাতের অক্ষর ব্যবহার করা ত্রুটিযুক্ত প্রবণতা (যখন আপনি উইন্ডোজ এবং লিনাক্স উভয় ক্ষেত্রেই বোঝার কোডটি ব্যবহার করেন)।

তার বক্তব্যটি হ'ল তিনি Qtসম্মেলনগুলি অনুসরণ করেন (এমন কি কোডের জন্যও যা Qt ব্যবহার করে না) এবং বলে রাখছেন: "যদি Qt এটি করে তবে তা খারাপ হতে পারে না।"

এখন আমি একটি মুক্ত মন রাখার চেষ্টা করি, তবে যখন আমি তার লাইব্রেরিগুলিতে / নিয়ে কাজ করতে পারি তখন আমার খুব খারাপ লাগে। এ সম্পর্কে কি নিয়মগুলির একটি সাধারণ প্রতিষ্ঠিত সেট আছে? মান কি এটি সম্পর্কে কিছু বলে?

আপনাকে অনেক ধন্যবাদ.


3
#define signal…… ... ("যদি কিউটি এটি সেভাবে করে তবে তা খারাপ হতে পারে না।") - আমি বলতে পারি না যে আমি ব্যক্তিগতভাবে তাদের সমস্ত নকশার পছন্দগুলিতে সম্মত।
জাস্টিন

@ জাস্টিন: আমিও না। আমার বিরুদ্ধে কিছু নেই Qt। আমি এমনকি এটি একটি আশ্চর্যজনক গ্রন্থাগার বলে মনে করি তবে তাদের কিছু নকশা পছন্দ আমার কাছে সত্যই ভুল মনে করে।
ereOn

1
@ জাস্টিন আমি ম্যাক্রোগুলি _জনপ্রিয়, বিস্তৃত-ব্যবহৃত কোড দিয়ে শুরু করে দেখেছি , তবে এটি নির্ধারণযোগ্যভাবে স্ট্যান্ডার্ডের বিরুদ্ধে নয়।
লুচিয়ান গ্রিগোর

1
তবে এক্সটেনশন ছাড়াই শিরোনামগুলি এড়ানোর একটি আসল কারণ: আমার প্রাথমিক আইডিই এবং পাঠ্য সম্পাদক এগুলি স্বয়ংক্রিয়ভাবে স্বীকৃতি দেবে না। আমি কেবল *.hppএকটি সি ++ শিরোলেখ ব্যবহার করি এবং আমার সমস্ত সরঞ্জাম "এটি পান"।
জাস্টিন

5
Qt সেই কনভেনশনটি হুবহু ব্যবহার করে কারণ স্মার্ট প্রোগ্রামাররা তা করে না। এর অর্থ হল আপনার শিরোনামগুলি নতুন কিউটি শিরোলেখগুলির সাথে সংঘর্ষ করবে না।
এমসাল্টারস

উত্তর:


16

এক্সটেনশন (বা অভাব) যাচ্ছে না, যতদূর আমি জানি, আপনাকে সমস্যা তৈরি করে। আমি বলব যে এক্সটেনশানটি পুরোপুরি বাদ দেওয়া অসুবিধাজনক কারণ এটি হেডার ফাইলগুলি অনুসন্ধান করা কঠিন করে তোলে (উদাহরণস্বরূপ ওয়াইল্ডকার্ডস *। এইচ এবং * .এইচপি সহ) এবং এটি কোনও ফাইলের বিষয়বস্তু সনাক্ত করা আরও কঠিন করে তোলে (উদাহরণস্বরূপ যদি আপনার সম্পাদক সঠিক সিনট্যাক্স হাইলাইটিং মোড চয়ন করতে এক্সটেনশনের উপর নির্ভর করে)।

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

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


একটি সম্মেলন বাছাই করা এবং এটির সাথে লেগে থাকা কোনও খারাপ ধারণা নয়, তবে বিদ্যমান সম্মেলনটি কীভাবে উন্নত করা যায়? সেক্ষেত্রে অবশ্যই কোর্সটি পরিবর্তন করা ভাল ধারণা।
কোটলিনস্কি

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

@ পলমন্ত: তবে আপনি কি এখানে নিজের বিরুদ্ধে তর্ক করছেন না? প্রথমত, আপনি বলেছিলেন যে কোনও কিছুর উন্নতির কোনও উপায় নেই। তারপরে, আপনি বলছেন একটি এক্সটেনশান না করাই ভাল। এটি এক প্রকার পরাজয়বাদী মনোভাব, বলেছেন যে কোনও পরিবর্তন সম্ভব নয়।
কোটলিনস্কি

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

1
@ কোটলিনস্কি কোনও কিছুর উন্নতি করার উপায় নেই তবে জিনিসগুলি আরও খারাপ করার উপায় রয়েছে। এই আলোচনাটি ফাঁকা-বনাম-ট্যাব আলোচনার মতো অর্থহীন। কেবল একটি সম্মেলন বেছে নিন এবং দরকারী কিছু করুন।
পল

6

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

  1. কোনও ফাইল কখনও এক্সটেনশন ছাড়াই হতে পারে এবং

  2. বিভিন্ন ধরণের ফাইলের আলাদা আলাদা এক্সটেনশন রয়েছে particular বিশেষত, সি ++ শিরোনামগুলি সি সংকলককে গ্রহণযোগ্য হ্যাডারের চেয়ে আলাদা এক্সটেনশন ( .hppবা .hh) ব্যবহার করে ।

(আফসোস, দ্বিতীয় নিয়মটি প্রায়শই লঙ্ঘন করা হয় এবং একটিতে প্রায়শই সি ++ শিরোনামের ফাইলগুলি দেখা যায় .hpersonal ব্যক্তিগত অভিজ্ঞতা থেকে, আমি নিশ্চিত করতে পারি যে এটি রাস্তায় রক্ষণাবেক্ষণের সমস্যা সৃষ্টি করবে, তবে এটি সাধারণ অনুশীলন))

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

উভয় ক্ষেত্রেই, আপনি sensকমত্যের দ্বারা প্রকল্পের জন্য বিধি তৈরি করেন এবং প্রত্যেকে সেগুলি অনুসরণ করে।


1
আমি পুরোপুরি এই জেমসের সাথে আছি। এটি যদি একই এক্সটেনশন থাকে তবে 2 বিভিন্ন ধরণের হেডার ফাইলগুলিতে যথাযথভাবে কাজ করতে এটি একটি দুঃস্বপ্নের সরঞ্জাম হয়ে ওঠে।

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

6
If Qt does it that way, then it can't be bad.

হ্যাঁ. হ্যাঁ, এটি সত্যই, সত্যিই পারে। তাদের গ্রন্থাগারের নকশাটি "আমরা খুব খারাপভাবে জাভা হতে চাই"। এটা মোট জগাখিচুড়ি। স্ট্যান্ডার্ড গ্রন্থাগারটি আরও ভাল।

এছাড়াও, মৌলিকভাবে, এটি একটি যৌক্তিক ভুল। কিউটি এর ডিজাইনটি কেবল অনুকরণের পক্ষে মূল্যবান যদি আপনি এটি কেন ভাল তা সম্পর্কে যৌক্তিক যুক্তি দিতে পারেন, এটি কেবল ভাল নয় কারণ এটি Qt।


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

0

আমি জানি যেহেতু 1998 স্ট্যান্ডার্ডের পরে কেবল মানক লাইব্রেরির শিরোনামগুলি .h ছাড়া থাকবে। সুতরাং অ-মানক সি ++ শিরোনাম ফাইলগুলি প্রচলিতভাবে এখনও। এইচ দিয়ে লেখা হয়। তবে মনে রাখবেন এটি একটি কনভেনশন, আপনি কোনও এক্সটেনশন বা এমনকি .txt এক্সটেনশন ব্যবহার করতে পারবেন না, এটি এমন যে আপনি আপনার ক্লাসগুলি নিম্নের সাথে শুরু করে লেখেন, এটি এখনও কাজ করছে, তবে এটি কনভেনশন নয়।


3
বিটিডব্লিউ "কিউটি যদি সেভাবে করে তবে তা খারাপ হতে পারে না।" এটি সত্যিই খারাপ যুক্তি ...

2
ব্যবহারকারীর দ্বারা সংজ্ঞায়িত শিরোনামগুলির নাম কীভাবে হওয়া উচিত সে সম্পর্কে মানকটির কিছু বলার নেই। এটি কেবলমাত্র মানক শিরোনামের নাম নির্দিষ্ট করে।
মাইক সিমুর

0

এগুলি কনভেনশনগুলি নিয়ম নয় যেখানে কনভেনশনগুলি মেনে চলা কোনও বাধা নেই, তবে আপনি যখন রেফারেন্সের জন্য আসেন তখন সম্মেলনগুলি জীবনকে সহজ করে তোলে।

এক্সটেনশন অনুসারে (.h, .hpp) যে ফাইলগুলি সি ++ এ অন্তর্ভুক্ত করা হয়েছে তাদের এক্সটেনশন থাকা দরকার নেই, আপনি সি লাইব্রেরি বা বুস্ট লাইব্রেরির মতো সি ++ ব্যতীত অন্য শিরোনাম ব্যবহার করছেন তবে আপনাকে এক্সটেনশনগুলি ব্যবহার করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.