জাভাদোকস বনাম স্ব-ডকুমেন্টিং কোড?


18

সাম্প্রতিককালে আমি বর্তমানে কোড বেসের কিছু অংশগুলি রিফ্যাক্টর করার কাজ করছি যা কেবলমাত্র আমি নিজেই এটি আরও ভালভাবে বুঝতে পারি না, তবে কোডটিতে কাজ করা অন্যদের পক্ষে আরও সহজ করে তোলা।

আমি স্ব-ডকুমেন্টিং কোডটি দুর্দান্ত তা ভেবেই ঝুঁকে পড়েছি । আমি কেবল মনে করি এটি ক্লিনার এবং যদি কোডটি নিজের পক্ষে কথা বলে তবে ভাল ... এটি দুর্দান্ত

অন্যদিকে আমাদের কাছে জাভাদোকসের মতো ডকুমেন্টেশন রয়েছে। আমি এটিও পছন্দ করি তবে এখানে একটি নির্দিষ্ট ঝুঁকি রয়েছে যে এখানে মন্তব্যগুলি পুরানো হয়ে যায় (পাশাপাশি সাধারণভাবে মন্তব্যগুলিও)। তবে, তারা যদি আপ-টু-ডেট থাকে তবে কোনও জটিল অ্যালগরিদম বোঝার জন্য এগুলি চূড়ান্তভাবে কার্যকর হতে পারে।

এর জন্য সর্বোত্তম অনুশীলনগুলি কী কী? আপনি স্ব-ডকুমেন্টিং কোড এবং জাভাদোকসের মধ্যে রেখাটি কোথায় আঁকেন?

উত্তর:


24

স্ব-ডকুমেন্টিং কোড (এবং কোড-এর মন্তব্যে) এবং জাভাদোকের মন্তব্যে দুটি খুব আলাদা লক্ষ্যযুক্ত শ্রোতা রয়েছে।

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

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


+1, এটি একটি ভাল কল। আমি মনে করি এটির সাথে আমার মূল আকর্ষণ হ'ল আমি এটিকে দুটি পৃথক লক্ষ্য শ্রোতা হিসাবে দেখছি না, তবে আপনি ঠিক বলেছেন।
আন্দ্রেস জোহানসন

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

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

24

কোড বলছে কিভাবে । মন্তব্য কেন এবং কেন সম্ভবত না

আপনার কোড ভবিষ্যতের পাঠক এবং রক্ষণাবেক্ষণকারী উভয়কেই সরবরাহ করা আপনার কাজ। কোডটিতে আপনি যা কিছু করতে পারেন, এবং সমস্ত মন্তব্যে রাখুন।

নোট করুন যে ক্যাপচার করা সবচেয়ে কঠিন জিনিসগুলি হ'ল ডিজাইনের সিদ্ধান্ত - সেগুলিও মনে রাখবেন।


2
+1: এটি একচেটিয়া অর্থে "হয়-বা" নয়। এটি উভয়ই একটি অন্তর্ভুক্তিমূলক অর্থে।
এসলট

আমি অবশ্যই এতে একমত বিশেষত জাভাডোকগুলির কথা বলতে গেলে আপনি কি অন্য কিছু বিবেচনা করবেন? ভালো লেগেছে, আমি কল্পনা করতে পারি যে কোনও পদ্ধতি কী করে তা বর্ণনা করা উদাহরণস্বরূপ API এর জন্য কার্যকর হতে পারে।
আন্দ্রেস জোহানসন

জাভাডোকগুলি বেশিরভাগ আইডিই থেকে খুব সহজেই অ্যাক্সেসযোগ্য। আরও তথ্যে নেভিগেট করা সহজ করুন।

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

4

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

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


3
+1 আমার প্রিয়টি হ'ল যখন সংস্থার কোডের মানটি নথিভুক্ত পদ্ধতিগুলির প্রয়োজন হয়, তবে প্রত্যেকে এমন একটি জেনারেটর ব্যবহার করে যা কোডটি ইতিমধ্যে যা বলেছে তার পুনরাবৃত্তি করে। ক্লান্তিকর, এবং অকেজো।
ক্রিপটিক

1

আমি মনে করি জাভাদোকসের সাথে জিনিসগুলি কোনও ডকুমেন্টেশনের মতোই একই - প্রধান নিয়মটি হ'ল:

শ্রোতা অনুসরণ করুন

না অনেক মানুষ আপনার javadocs পড়া? যদি হ্যাঁ, এটি সঠিক হওয়ার জন্য প্রচেষ্টা বিনিয়োগ করা ভাল বোঝার কাজ করে।

আপনার পাঠকরা জাভাদোকগুলি অধ্যয়নের পক্ষে পড়া কোডটি বাদ দেন? যদি হ্যাঁ, তবে এটি ভাল লেখার জন্য ব্যয় করা দ্বিগুণ বোধ করে।

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

এখন, এটা কি আপনার ক্ষেত্রে? যদি তা না হয় তবে জাভাদোকগুলিতে বিনিয়োগের প্রচেষ্টা ন্যায়সঙ্গত কিনা তা দুবার ভাবেন।

ইতিমধ্যে উপরে উল্লিখিত হিসাবে, উপায় খুঁজে শ্রোতাদের শুনতে

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

0

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


-1

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

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