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