কোনও অভ্যন্তরীণ লাইব্রেরির জন্য ডোক্সিন মন্তব্য ব্লক কোথায় রাখবেন - এইচ বা সিপিপি ফাইলগুলিতে? [বন্ধ]


100

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

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

পেশাদাররা:

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

কনস:

  • (স্পষ্টত এক) মন্তব্য ব্লকগুলি যেখানে ঘোষণাপত্র রয়েছে সেখানে শিরোলেখ ফাইলগুলিতে নেই।

সুতরাং, আপনি কি মনে করেন এবং সম্ভবত পরামর্শ দেন?

উত্তর:


78

কোডটি ব্যবহার করুন এবং কোডটিতে কাজ করার সাথে সাথে লোকেরা এটি পড়বে এবং লিখবে Put

ক্লাসের মন্তব্যগুলি ক্লাসের সামনে যায়, পদ্ধতিগুলির সামনে পদ্ধতিতে মন্তব্যগুলি।

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


11
আমার শিরোনামে ডকসগুলি কেন এড়ানো উচিত সে সম্পর্কে আমার বেদনাদায়ক স্মরণ রয়েছে - বর্ষীয়ান উপাচার্য ক্লাস ঘোষণায় পদ্ধতিতে মন্তব্য করার জন্য বলেছিলেন এবং আমি নিজেকে পরবর্তী সময়ে মন্তব্য সম্পাদনাগুলি সংরক্ষণ করে দেখতে পেয়েছি কারণ এই শিরোনামগুলিকে আঘাত করা 45 মিনিটের বিল্ড টাইমকে ট্রিগার করে !
অ্যান্ডি ডেন্ট

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

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

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

78

আমি একাধিক জায়গায় নাম নথিভুক্ত করা যেতে পারে যে সত্য ব্যবহার করতে চাই।

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

আমি প্রকৃত প্রয়োগের পাশে উত্স ফাইলগুলিতে দীর্ঘ-ফর্ম্যাট ডকুমেন্টেশন রেখেছি, যাতে পদ্ধতিটি বিকশিত হওয়ার সাথে সাথে বিশদটি পরিবর্তন করা যায়।

উদাহরণ স্বরূপ:

mymodule.h

/// @brief This method adds two integers.
/// @param a First integer to add.
/// @param b Second integer to add.
/// @return The sum of both parameters.
int add(int a, int b);

mymodule.cpp

/// This method uses a little-known variant of integer addition known as
/// Sophocles' Scissors. It optimises the function's performance on many
/// platforms that we may or may not choose to target in the future.
/// @TODO make sure I implemented the algorithm correctly with some unit tests.
int add(int a, int b) {
  return b + a;
}

4
আমি এই পদ্ধতিটি পছন্দ করি তবে এটি AUTOBRIEF এর সাথে বেমানান বলে মনে হয়। আমি জানতে আগ্রহী যে উত্পাদিত একাধিক সংক্ষিপ্তসারগুলি মুছে ফেলার জন্য কোনও কনফিগারেশন কাজ রয়েছে কিনা।
অ্যারন রাইট

আমি এই পদ্ধতিটিও পছন্দ করি, এটি বাস্তবায়নে একটি ভাল ভারসাম্য সরবরাহ করে।
Xofo

আমি আমার মেশিনে এই পদ্ধতিটি পুনরুত্পাদন করতে সক্ষম নই, ডক্সিজেন 1.8.15 ব্যবহার করে। প্যারামিটার ডকুমেন্টেশন উপস্থিত হয় না, শুধুমাত্র সংক্ষিপ্ত এবং বিস্তারিত বিবরণ।
পুণিদিয়া

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

19

শিরোনামে মন্তব্য থাকার অর্থ একটি মন্তব্য পরিবর্তিত হলে কোনও শ্রেণীর সমস্ত ব্যবহারকারীকে অবশ্যই পুনরায় কম্পাইল করতে হবে। একটি বড় প্রকল্পের জন্য, কোডাররা পরবর্তী 20 মিনিটের সবকিছু পুনর্নির্মাণে ব্যয় করতে ঝুঁকিপূর্ণ হলে তারা শিরোনামগুলিতে মন্তব্যগুলি আপডেট করার ক্ষেত্রে কম ঝুঁকবে।

এবং .. যেহেতু আপনার এইচটিএমএল ডকটি পড়ার এবং ডকুমেন্টেশনের জন্য কোডটি ব্রাউজ করার কথা নয়, তাই কোনও বড় সমস্যা নয় যে মন্তব্য ব্লকগুলি উত্স ফাইলগুলিতে সন্ধান করা আরও কঠিন।


সঠিক, তবে এটি একটি বড় সমস্যা যদি এটি কোনও গতিশীল লাইব্রেরিটি একটি
কারুকারখানা

13

শিরোনাম: ফাইলগুলি দেখার সময় অন্যান্য "শব্দ" কম থাকায় মন্তব্যগুলি পড়া সহজ to

উত্স: তারপরে মন্তব্যগুলি দেখার সময় আপনার কাছে পড়ার জন্য আসল কার্যাদি রয়েছে।

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

তবে আপনি সাধারণ কমান্ডের সাহায্যে ফলাফলগুলি বিভিন্ন ফাইল ডকুমেন্টেশনে অনুলিপি করতে পারেন। যেমন: -

আমার file1.h

/**
 * \brief Short about function
 *
 * More about function
 */
WORD my_fync1(BYTE*);

আমার ফাইল 1। সি

/** \copydoc my_func1 */
WORD my_fync1(BYTE* data){/*code*/}

এখন আপনি উভয় ফাংশনে একই ডকুমেন্টেশন পাবেন।

এটি আপনাকে কোড ফাইলগুলিতে কম শব্দ দেয় একই সাথে আপনি চূড়ান্ত আউটপুটে বেশ কয়েকটি স্থানে উপস্থাপিত এক জায়গায় ডকুমেন্টেশন পান।


4
ব্লকটি কখন অনুলিপি করা হবে?
Mert ক্যান এরগান

2

সাধারণত আমি .c ফাইলে ইন্টারফেসের (\ প্যারাম, \ রিটার্ন) ডকুমেন্টেশন এবং .c / .cpp / .m ফাইলে প্রয়োগের জন্য ডকুমেন্টেশন (\ বিশদ) রাখি। ডোজিজেন ফাংশন / পদ্ধতির ডকুমেন্টেশনের সমস্ত কিছুকে দলবদ্ধ করে।


2

আমি সমস্ত কিছু হেডার ফাইলে রেখেছি।

আমি সমস্ত কিছু নথিভুক্ত করি তবে কেবলমাত্র সর্বজনীন ইন্টারফেসটি বের করি।


2

আমি প্রোগ্রামিংয়ের জন্য কিউটিক্রিটার ব্যবহার করছি। একটি খুব দরকারী কৌশল কৌশল বা শিরোনাম ফাইলটিতে ঘোষণা পেতে পদ্ধতি বা পদ্ধতিতে Ctrl- ক্লিক ক্লিক করে।

পদ্ধতিটি যখন শিরোনাম ফাইলে মন্তব্য করা হয়, আপনি দ্রুত যা সন্ধান করছেন তা সন্ধান করতে পারবেন। সুতরাং আমার জন্য, মন্তব্যগুলি হেডার ফাইলে থাকা উচিত!


-1

সি ++ এ কখনও কখনও বাস্তবায়ন শিরোনাম এবং .cpp মডিউলগুলির মধ্যে বিভক্ত হয়। এখানে শিরোনাম ফাইলটিতে এটি ডকুমেন্টেশন রাখা পরিষ্কার বলে মনে হচ্ছে যে সমস্ত পাবলিক ফাংশন এবং পদ্ধতিগুলির গ্যারান্টিযুক্ত এমন একমাত্র জায়গা।

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