ইন্টারফেস, বাস্তবায়ন বা উভয় মন্তব্য?


128

আমি ধারণা করি যে আমরা সকলেই (যখন আমাদের বিরক্ত করা যায়!) আমাদের ইন্টারফেসগুলিতে মন্তব্য করে। যেমন

/// <summary>
/// Foo Interface
/// </summary>
public interface Foo
{
    /// <summary>
    /// Will 'bar'
    /// </summary>
    /// <param name="wibble">Wibble factor</param>
    void Bar(string wibble);
}

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

ধন্যবাদ


এখানে মাধ্যমে নকল লুকিয়ে ঢুকলাম: stackoverflow.com/questions/1875440/...
bytedev

উত্তর:


98

একটি সাধারণ নিয়ম হিসাবে, আমি কোডের মতো একই DRY (নিজেকে পুনরাবৃত্তি করবেন না) নীতিটি ব্যবহার করি:

  • ইন্টারফেসে, ডকুমেন্ট ইন্টারফেস
  • প্রয়োগের উপর, প্রয়োগের সুনির্দিষ্ট নথিতে

জাভা সুনির্দিষ্ট : বাস্তবায়নের ডকুমেন্ট করার সময়, ইন্টারফেস থেকে জাভাদোকগুলি "অন্তর্ভুক্ত" করতে in @inheritDoc। ট্যাগ ব্যবহার করুন।

আরও তথ্যের জন্য:


@InheritDoc ট্যাগ সম্পর্কে যে তথ্য আমি জানিনা তার জন্য দুর্দান্ত ধন্যবাদ
পল হিলান

বাহ ... আমার কোনও ধারণা ছিল না in @inheritDoc either হয় বা আছে! আমি আজ থেকে এটি নিয়মিত ব্যবহার করব।
মাচারেম

35
সি # এর জন্য, আপনি ব্যবহার করতে পারেন <inheritdoc />যা স্যান্ডকাস্টল দ্বারা সমর্থিত। ( আরও তথ্য ... )
ড্যানিয়েল এএ পেলসেমেকার

2
উত্তরাধিকার সূত্রে প্রাপ্ত শ্রেণীর মধ্যে থাকা বৈশিষ্ট্য এবং অন্যান্য উপাদানগুলি কেবলমাত্র ইন্টারফেসে উল্লিখিত হলে টুলটিপে XML ডকুমেন্টেশন প্রদর্শন করে না। একই শ্রেণীর বাহ্যিক ব্যবহারের জন্য, এটি দৃশ্যমান। এই ভিসুয়াল স্টুডিও 2015. সাথে একটি বাগ হতে পারে
SondreB

2
এখানে স্যান্ডক্যাসল / এসএইচএফবি inheritdocপৃষ্ঠার জন্য সরবরাহ করা লিখিত @ ভার্টলিংকের একটি আপডেট সংস্করণ রয়েছে : ewsoftware.github.io/XMLCommentsGuide/html/…
weir

7

আপনি যদি ঘোস্টডক অ্যাডিন ব্যবহার করেন , এটি ইন্টারফেস থেকে মন্তব্য সহ প্রয়োগটি আপডেট করে যখন আপনি ডান ক্লিক করবেন এবং পদ্ধতিতে "এই নথিটি " নির্বাচন করুন।


5

সি # এর জন্য এটি আইএমও নির্ভর করে: আপনি যদি স্পষ্টত ইন্টারফেস প্রয়োগগুলি ব্যবহার করেন তবে আমি প্রয়োগটি নথিভুক্ত করব না।

তবে আপনি যদি সরাসরি ইন্টারফেসটি প্রয়োগ করেন এবং ইন্টারফেসের সদস্যদের আপনার অবজেক্টের সাথে প্রকাশ করেন তবে এই পদ্ধতিগুলি অবশ্যই নথিভুক্ত করা উচিত।

নাথ যেমন বলেছিলেন, আপনি প্রয়োগের ক্ষেত্রে একটি ইন্টারফেসের ডকুমেন্টেশন স্বয়ংক্রিয়ভাবে toোকাতে ঘোস্টডক ব্যবহার করতে পারেন। আমি ডকুমেন্টটি এই কমান্ডটি Ctrl + Shift + D শর্টকাটে ম্যাপ করেছি এবং এর প্রায় একটি কী-স্ট্রোক আমি প্রায় স্বয়ংক্রিয়ভাবে চাপছি। আমি বিশ্বাস করি যে রিশার্পারের কাছে ইন্টারফেসের ডকুমেন্টেশন সন্নিবেশ করার বিকল্প রয়েছে, যখন এটি আপনার জন্য পদ্ধতিগুলি কার্যকর করে।


4

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


4

আমরা কেবল ইন্টারফেসটিই মন্তব্য করি, মন্তব্যগুলি উত্পন্ন বা বেস শ্রেণি / ইন্টারফেসের সাথে সিঙ্ক থেকে বেরিয়ে আসা এত সহজ যে এটি কেবলমাত্র এক জায়গায় থাকা ভাল।

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


দুর্ভাগ্যক্রমে, স্বয়ংক্রিয় নয়, ব্যবহারকারীর ক্রিয়া প্রয়োজন।
নিকোলাইড্যান্ট

3

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

প্রয়োগগুলি ঠিক সেভাবেই হয়, যতক্ষণ না তারা ইন্টারফেসের সাথে সামঞ্জস্য হয় ততক্ষণ তাদের আলাদা করে নথিভুক্ত করার দরকার নেই।


1

আমি একটি সরঞ্জাম তৈরি করেছি যা <উত্তেজনাপূর্ণ /> ট্যাগটির জন্য সমর্থন যুক্ত করতে এক্সএমএল ডকুমেন্টেশন ফাইলগুলি পোস্ট-প্রক্রিয়া করে।

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

এটি www.inheritdoc.io এ (বিনামূল্যে সংস্করণ উপলব্ধ)।


দ্রষ্টব্য যে <ওয়ারেনডোক /> স্যান্ডক্যাসল সহায়তা ফাইল বিল্ডার দ্বারাও সমর্থিত, এবং এখানে নথিভুক্ত করা হয়েছে: ewsoftware.github.io/XMLCommentsGuide/html/… । শুধু দাগী যে এটি উপরেও উল্লেখ করা হয়েছিল।
অলি

1

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


1

সি # ব্যবহার:

ইন্টারফেসটি দেখতে এটি দেখতে পারে:

    /// <summary>
    /// Helper class to access various properties for the current site.
    /// </summary>
    public interface ISiteHelper
    {
        /// <summary>
        /// Gets the site id of the current site
        /// </summary>
        /// <returns>The site id.</returns>
        int GetSiteID();
    }
}

বাস্তবায়ন এইরকম দেখতে পারে:

/// <inheritdoc />
public class SiteHelper: ISiteHelper
{
    /// <inheritdoc />
    public int GetSiteID()
    {
        return CommonRepository.GetSiteID();
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.