ইন্টারফেসে জাভাদোক মন্তব্য যুক্ত করা এবং বাস্তবায়নে জাভাদোক মন্তব্যগুলি যুক্ত করা কি সঠিক অনুশীলন?
আপনি যখন স্বয়ংক্রিয়ভাবে মন্তব্য তৈরি করেন তখন বেশিরভাগ আইডিই বাস্তবায়নগুলির জন্য জাভা-ডক মন্তব্য তৈরি করে। কংক্রিট পদ্ধতিতে বর্ণনা থাকা উচিত নয়?
ইন্টারফেসে জাভাদোক মন্তব্য যুক্ত করা এবং বাস্তবায়নে জাভাদোক মন্তব্যগুলি যুক্ত করা কি সঠিক অনুশীলন?
আপনি যখন স্বয়ংক্রিয়ভাবে মন্তব্য তৈরি করেন তখন বেশিরভাগ আইডিই বাস্তবায়নগুলির জন্য জাভা-ডক মন্তব্য তৈরি করে। কংক্রিট পদ্ধতিতে বর্ণনা থাকা উচিত নয়?
উত্তর:
যে পদ্ধতিগুলি শুধুমাত্র বাস্তবায়িত হয় (ওভাররাইডগুলি নয়), অবশ্যই, কেন তা নয়, বিশেষত যদি তারা সর্বজনীন হয়।
আপনার যদি একটি ওভাররাইডিং পরিস্থিতি থাকে এবং আপনি কোনও পাঠ্য প্রতিলিপি করতে চলেছেন তবে অবশ্যই তা নয়। অনুলিপি হ'ল তাত্পর্য সৃষ্টির একটি নিশ্চিত উপায়। ফলস্বরূপ, ব্যবহারকারীরা সুপারটাইপ বা উপ-টাইপের পদ্ধতিটি পরীক্ষা করে কিনা তার উপর ভিত্তি করে আপনার পদ্ধতির আলাদা ধারণা অর্জন করবে। @inheritDoc
কোনও ডকুমেন্টেশন ব্যবহার করুন বা সরবরাহ করবেন না - আইডিইগুলি তাদের জাভাদোক ভিউতে সর্বনিম্ন উপলব্ধ টেক্সটটি নেবে।
অন্যদিকে, যদি আপনার ওভাররাইডিং সংস্করণটি সুপার টাইপের ডকুমেন্টেশনে স্টাফ যুক্ত করে, আপনি সমস্যার জগতে থাকতে পারেন। আমি আমার পিএইচডি করার সময় এই সমস্যাটি অধ্যয়ন করেছি এবং দেখেছি যে সাধারণভাবে তারা কোনও সুপারটাইপের মাধ্যমে প্রার্থনা করে যদি ওভাররাইড সংস্করণে অতিরিক্ত তথ্য সম্পর্কে কখনও সচেতন না হয় aware
এই সমস্যার সমাধান করা প্রোটোটাইপ সরঞ্জামটির অন্যতম প্রধান বৈশিষ্ট্য ছিল - যখনই আপনি কোনও পদ্ধতির আবেদন করেছিলেন, আপনি যখনই এর লক্ষ্য বা কোনও সম্ভাব্য ওভাররাইডিং লক্ষ্যগুলিতে গুরুত্বপূর্ণ তথ্য (উদাহরণস্বরূপ, একটি বিবাদমূলক আচরণ) রাখেন তবে আপনি একটি ইঙ্গিত পেয়েছিলেন। উদাহরণস্বরূপ, কোনও মানচিত্রে রাখার সময় আপনাকে স্মরণ করিয়ে দেওয়া হয়েছিল যে আপনার বাস্তবায়ন যদি একটি ট্রিম্যাপ হয় তবে আপনার উপাদানগুলির তুলনামূলক হওয়া দরকার।
বাস্তবায়ন এবং ইন্টারফেস উভয় জাভাদোক থাকা উচিত। কিছু সরঞ্জামের সাহায্যে আপনি @inheritDoc কীওয়ার্ড সহ ইন্টারফেসের ডকুমেন্টেশন উত্তরাধিকারী হতে পারেন।
/**
* @inheritDoc
*
* This implementation is very slow when b equals 3.
*/
public foo(int b)
{ ... }
{@inheritDoc}
এবং এটি কেবল তখনই কাজ করে যদি আপনার প্রথম @Override
কিছুটা ভাল অনুশীলন করা উচিত
/**
* {@inheritDoc}
*/
বাস্তবায়নের জাভাদোক হিসাবে (যদি না বাস্তবায়নের বিশদ সম্পর্কে আরও কিছু ব্যাখ্যা করা থাকে)।
সাধারণত, আপনি যখন কোনও পদ্ধতিকে ওভাররাইড করেন, আপনি বেস শ্রেণি / ইন্টারফেসে সংজ্ঞায়িত চুক্তিটি মেনে চলেন, সুতরাং আপনি কোনওভাবেই মূল জাভাদোকটি পরিবর্তন করতে চান না। সুতরাং অন্যান্য উত্তরে উল্লিখিত @inheritDoc
বা @see
ট্যাগ ব্যবহারের প্রয়োজন হয় না এবং আসলে কোডে একটি শব্দ হিসাবে কাজ করে। সমস্ত বুদ্ধিমান সরঞ্জামগুলি এখানে উল্লিখিত হিসাবে সুপারক্লাস বা ইন্টারফেস থেকে পদ্ধতি জাভাদোক উত্তরাধিকার সূত্রে প্রাপ্ত :
Inherit from classes and interfaces - Inheriting of comments occurs in all
three possible cases of inheritance from classes and interfaces:
- When a method in a class overrides a method in a superclass
- When a method in an interface overrides a method in a superinterface
- When a method in a class implements a method in an interface
কোনও পদ্ধতিকে ওভাররাইড করার সময় কিছু সরঞ্জাম (আমি আপনাকে দেখছি, গ্রহণ করছি!) ডিফল্টরূপে এগুলি উত্পন্ন করার বিষয়টি কেবল একটি দুঃখজনক বিষয়, তবে আপনার কোডটি অকেজো শোরগোল দিয়ে ন্যায়সঙ্গত করে না।
অবশ্যই বিপরীত ক্ষেত্রে থাকতে পারে, যখন আপনি আসলে ওভাররাইড পদ্ধতিতে সাধারণত একটি মন্তব্য যুক্ত করতে চান (সাধারণত কিছু অতিরিক্ত প্রয়োগের বিশদ বা চুক্তিটি কিছুটা কঠোর করে তোলা হয়)। তবে এই ক্ষেত্রে, আপনি প্রায়শই এরকম কিছু করতে চান না:
/**
* {@inheritDoc}
*
* This implementation is very, very slow when b equals 3.
*/
কেন? কারণ উত্তরাধিকার সূত্রে প্রাপ্ত মন্তব্য সম্ভবত খুব দীর্ঘ হতে পারে। এমন ক্ষেত্রে 3 টি দীর্ঘ অনুচ্ছেদের শেষে অতিরিক্ত বাক্যটি কার নজরে পড়বে ?? পরিবর্তে, কেবল আপনার নিজের মন্তব্যের অংশটি লিখুন এবং এগুলিই। সমস্ত জাভাডোক সরঞ্জাম সর্বদা লিঙ্ক দ্বারা নির্দিষ্ট কিছু ধরণের দেখায় যা আপনি বেস শ্রেণীর মন্তব্য পড়তে ক্লিক করতে পারেন। তাদের মিশ্রণ করার কোনও মানে নেই।
@see এটি ইন্টারফেসে বর্ণনার একটি লিঙ্ক উত্পন্ন করে। তবে আমি মনে করি বাস্তবায়ন সম্পর্কেও কিছু বিশদ যুক্ত করা ভাল।
@see
ইন্টারফেসের পদ্ধতির সাথে লিঙ্ক ব্যবহার করা আইএমও একটি ভাল অনুশীলন এবং বেশিরভাগ ক্ষেত্রে এটি যথেষ্ট। যখন আপনি জাভাডোকটি ইন্টারফেস পদ্ধতি থেকে কংক্রিট বাস্তবায়নে অনুলিপি করেন আপনি কেবলমাত্র ডুপ্লিকেট তথ্য এবং এটি দ্রুত অসম্পূর্ণ হতে পারে। যাইহোক, বাস্তবায়ন সম্পর্কে অতিরিক্ত কোনও তথ্য জাভাদকটিতে যুক্ত করা উচিত।
সোজার্ড সঠিকভাবে বলেছে যে ইন্টারফেস এবং বাস্তবায়ন উভয়েরই জাভাডক থাকা উচিত। জাভাডক ইন্টারফেসটি পদ্ধতির চুক্তিটি নির্ধারণ করতে হবে - পদ্ধতিটি কী করা উচিত, কী ইনপুট গ্রহণ করে, কোনটি ফিরে আসে উচিত এবং ত্রুটির ক্ষেত্রে এটি কী করা উচিত।
বাস্তবায়নের ডকুমেন্টেশনের চুক্তিতে এক্সটেনশন বা বিধিনিষেধগুলি এবং প্রয়োগের যথাযথ বিবরণ, বিশেষত কর্মক্ষমতা লক্ষ করা উচিত।
উত্সাহিত জাভাদোকের খাতিরে হ্যাঁ কিছু যায় আসে না। আপনি যদি কেবল একটি ইন্টারফেস ব্যবহার করে কোনও কংক্রিট প্রয়োগের রেফারেন্স ঘোষণা করেন তবে এটি ইন্টারফেসের পদ্ধতিগুলি আইডিই দ্বারা পুনরুদ্ধার করা হবে না।