ইন্টারফেস বাস্তবায়নের উপর নকল ডকুমেন্টেশন / ওভাররাইড ভাল বা খারাপ?


20

সুতরাং আমাদের মত একটি ইন্টারফেস আছে

/// <summary>
/// Interface for classes capable of creating foos
/// </summary>
public interface ICreatesFoo
{
  /// <summary>
  /// Creates foos
  /// </summary>
  void Create(Foo foo);
  /// <summary>
  /// Does Bar stuff
  /// </summary>
  void Bar();
}

সম্প্রতি, আমরা একটি ডকুমেন্টেশনের গল্প খেলেছি যার মধ্যে উত্পন্ন এবং নিশ্চিত হওয়া যায় যে উপরের মতো প্রচুর এক্সএমএল ডকুমেন্টেশন রয়েছে। এটি যদিও ডকুমেন্টেশনের অনেকগুলি সদৃশ ঘটায়। বাস্তবায়ন উদাহরণ:

/// <summary>
/// A Foo Creator which is fast
/// </summary>
public class FastFooCreator : ICreatesFoo
{
  /// <summary>
  /// Creates foos
  /// </summary>
  public void Create(Foo foo)
  {
    //insert code here
  }
  /// <summary>
  /// Does Bar stuff
  /// </summary>
  public void Bar()
  {
    //code here
  }
}

আপনি দেখতে পাচ্ছেন যে পদ্ধতিটি ডকুমেন্টেশন হ'ল ইন্টারফেস থেকে একটি সরল চাবুক।

বড় প্রশ্ন হ'ল এটি কি খারাপ জিনিস? আমার অন্ত্রে সদৃশ কারণে হ্যাঁ বলছে, কিন্তু তারপর আবার না?

এছাড়াও, আমাদের overrideফাংশন এবং virtualফাংশনগুলির সাথে অনুরূপ অন্যান্য ডকুমেন্টেশন নকল রয়েছে ।

এটি কি খারাপ এবং এড়ানো উচিত, না? এটা কি আদৌ সার্থক?


আপনি যদি পুনঃভাগটি ব্যবহার করেন তবে আপনি কেবল প্রয়োগের ক্ষেত্রে মন্তব্যগুলি পরিবর্তন করতে পারেন এবং তারপরে "পুল সদস্যদের আপ" ব্যবহার করে ইন্টারফেসটি আপডেট করতে পারেন।
ঘূর্ণিযোদ্ধা

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

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

উত্তর:


9

সাধারণভাবে, আমি কেবলমাত্র বাস্তবায়নের পদ্ধতিগুলিতে নতুন ডকুমেন্টেশন যুক্ত করব যদি সেই বাস্তবায়ন সম্পর্কে উল্লেখ করার দরকার হয় তবে।

জাভাডোকে আপনি অন্যান্য পদ্ধতির সাথে লিঙ্ক করতে পারেন, যা আপনাকে ইন্টারফেসে পদ্ধতি ডকুমেন্টেশনের সাথে প্রয়োগের ক্ষেত্রে কেবল একটি লিঙ্ক তৈরি করতে দেয়। আমি মনে করি এটি এটি করা উচিত N নেট (আমার নিজের অনলাইন ডকুমেন্টেশন পড়ার উপর ভিত্তি করে, আমার নিজের অভিজ্ঞতা নয়):

/// <summary>
/// Interface for classes capable of creating foos
/// </summary>
public interface ICreatesFoo
{
  /// <summary>
  /// Creates foos
  /// </summary>
  void Create(Foo foo);
  /// <summary>
  /// Does Bar stuff
  /// </summary>
  void Bar();
}

/// <summary>
/// A Foo Creator which is fast
/// </summary>
public class FastFooCreator : ICreatesFoo
{
  /// <summary>
  /// <see cref="ICreatesFoo.Create(Foo)"/>
  /// </summary>
  public void Create(Foo foo)
  {
    //insert code here
  }
  /// <summary>
  /// <see cref="ICreatesFoo.Bar()"/>
  /// Also Note: Implementation of Bar() in FastFooCreator
  /// requires a minimum of 512 MB RAM to Bar the Foo. 
  /// </summary>
  public void Bar()
  {
    //code here
  }
}

<see/>উপাদানটির জন্য ডকুমেন্টেশন : http://msdn.microsoft.com/en-us/library/acd0tfbe.aspx


উত্তরাধিকারসূত্রে প্রাপ্ত ক্লাসে এক্সএমএল ডক্সকে ওভাররাইড করার বিষয়ে কীভাবে? বলুন আমি এর একটি উপ-শ্রেণি তৈরি করেছি Collection<T>এবং এর Countবৈশিষ্ট্য XML ডক্সকে ওভাররাইড করতে চাই ।
শিমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.