এক্সপোর্টের সম্পত্তি সম্পর্কিত ডকুমেন্টেশনে কি "গেটস বা সেট .." প্রয়োজনীয়?


19

আমি সি # তে এক্সএমএল মন্তব্যের জন্য সেরা অনুশীলনের একটি সুপারিশ খুঁজছি। আপনি যখন কোনও সম্পত্তি তৈরি করেন, মনে হয় প্রত্যাশিত এক্সএমএল ডকুমেন্টেশনের নিম্নলিখিত ফর্মটি রয়েছে:

/// <summary>
/// Gets or sets the ID the uniquely identifies this <see cref="User" /> instance.
/// </summary>
public int ID {
    get;
    set;
}

কিন্তু কি অপারেশন ক্লাসের বাইরের গ্রাহকদের পাওয়া যায় যেহেতু সম্পত্তির স্বাক্ষর ইতিমধ্যে আপনি বলে (এই ক্ষেত্রে এটি উভয় getএবং set) আমি মনে করি মন্তব্য মতো সহজেই অবাঞ্ছিত এবং যে সম্ভবত নিম্নলিখিত যথেষ্ট হবে:

/// <summary>
/// ID that uniquely identifies this <see cref="User" /> instance.
/// </summary>
public int ID {
    get;
    set;
}

মাইক্রোসফ্ট প্রথম ফর্মটি ব্যবহার করে তাই দেখে মনে হচ্ছে এটি একটি অন্তর্নিহিত কনভেনশন। তবে আমি মনে করি যে আমি বলেছি যে কারণে দ্বিতীয়টি ভাল।

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

আমি অফিসিয়াল প্রস্তাবিত অনুশীলনের কোনও ধারণা বা লিঙ্কগুলির প্রশংসা করব।


সত্যই মন্তব্যটি আমাকে দেয় যা কেবল কোডে নেই (ধরে নিলেন এটি ব্যবহারকারীর সদস্য) এটি আইডিটি অনন্য। সুতরাং এর কোনওটিই 'প্রয়োজনীয়' নয়।
জে কে।

@ টমাস - আপনি কি ঘোস্টডক প্লাগইন ইনস্টল করেছেন ? যদি তোমরা উত্তম সম্পত্তি নাম ব্যবহার দিয়ে শুরু এবং স্বয়ংক্রিয়ভাবে লাগাতে এটা আপনার জন্য ভাল এক্সএমএল মন্তব্য উত্পন্ন করবে gets or setsবা getsনির্ভর সম্পত্তি accessors উপর।
ট্রেভর পিলি 15 '21

@ ট্রেভর - আমার এটি ইনস্টল করা আছে। আমি কেবল ভাবছিলাম যে এর টেমপ্লেটগুলি পরিবর্তন করা উচিত এবং "গেটস বা সেট" অপসারণ করা উচিত কিনা :) :) যদিও এটি দুর্দান্ত প্লাগইন।
টমাস

অদম্য বিশ্বে আপনাকে স্বাগতম ।
কর্নেল আতঙ্ক

উত্তর:


28

স্বাক্ষরটি কোডের অন্যান্য টুকরোকে বলতে পারে যে কী অপারেশন উপলব্ধ available তবে সে কোডারকে পরিষ্কারভাবে দেখা যাচ্ছে না কারণ সে কাজ করছে এবং এক্সএমএল ডকুমেন্টেশন বোঝায় লোকেরা গ্রাহক এবং সংকলক নয়।

উদাহরণস্বরূপ এই ক্লাসটি নিন:

public class MyClass
{
    /// <summary>
    /// The first one
    /// </summary>
    public int GetOrSet { get; set; }

    /// <summary>
    /// The second one
    /// </summary>
    public int GetOnly { get; private set; }

    /// <summary>
    /// The last one
    /// </summary>
    public int SetOnly { set; private get; }
}

ইন্টেলিজেন্স যখন এই বৈশিষ্ট্যগুলির মধ্যে একটিতে অ্যাক্সেসের জন্য টানা থাকে তখন কোনও ইঙ্গিত নেই যা কোনটিতে লিখিত, পাঠ করা বা উভয় হতে পারে:

এখানে চিত্র বর্ণনা লিখুন

একইভাবে ডকুমেন্টেশন দেখার সময় আমরাও যথেষ্ট নিশ্চিত নই:

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

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

এখানে চিত্র বর্ণনা লিখুন


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

1
@ টমাস আমি সম্মত হই যে ভিজ্যুয়াল স্টুডিওর আরও একটি পার্থক্য করা উচিত। আমি সম্পত্তিটিকে অন্যায়ভাবে ব্যবহার করার পরে দ্বিতীয়বারের মতো একটি লাল স্কুইগ্লি লাইন দিলে অবশ্যই আনন্দিত।
মাইকে

2

স্টাইলকপGets or Sets ... এমন স্বীকৃতি ব্যবহার করে যা এটি SA1623 বিধি প্রয়োগ করে ।

লিঙ্কযুক্ত পৃষ্ঠাটি আপনি তালিকাভুক্ত না করে এমন একটি মামলার তালিকা দেয়:

/// <summary>
/// Gets a value indicating whether the item is enabled.
/// </summary>
public bool Enabled
{
    get { return this.enabled; }
}

আপনি তালিকাভুক্ত অন্য বিকল্পটি হবে।

/// <summary>
/// ID that uniquely identifies this <see cref="User" /> instance.
/// </summary>
public int ID { get; set; }

বনাম

/// <summary>
/// ID that uniquely identifies this <see cref="User" /> instance.
/// </summary>
public int ID { get; }

যা সম্পত্তি শুধুমাত্র পাঠযোগ্য Intellisense ইঙ্গিতটি তথ্য প্রদান করবে না, আপনি খুব এই ক্ষেত্রে একটি কনভেনশন সঙ্গে আসা পর্যন্ত পারে, কিন্তু Gets ..., Gets or Sets...চমত্কারভাবে নিচ পেশা আছে।

স্টাইলকপ নিয়মে তালিকাভুক্ত অন্য রূপগুলিও রয়েছে যা ব্যবহার করে পরিষ্কার হয় তবে Gets or Sets...তা নাও হতে পারে।

এছাড়াও ডক্সিজেন বা স্যান্ডক্যাসলের মতো কিছু থেকে ডকুমেন্টেশন তৈরি করার সময় সম্পূর্ণ নোটেশনটি API (যেমন উদাহরণস্বরূপ) আরও ভাল নথিতে লিপ্ত হয়।


2

এক্সএমএল মন্তব্যে কোনও সম্পত্তি পাওয়ার এবং সেটিং সম্পর্কে তথ্য যুক্ত করার পরে আমি যখন প্রত্যাশা অনুযায়ী আচরণ করি না (সরাসরি পাবলিক প্রাপ্তি এবং সেট)।

হয় হয় ব্যক্তিগত হয় বা যদি তাদের অতিরিক্ত যুক্তি থাকে তবে আমি তাদের উল্লেখ করি, অন্যথায় আমি কেবল সম্পত্তির উদ্দেশ্যটি নথি করি।


1

আমি আরও ভার্বোজ সংস্করণে আরও সুখী হব।

অন্যটি হ'ল ভাল, একটি কাউন্টার ভেরিয়েবলকে বাড়িয়ে দেওয়ার পরে "ইনক্রিমেন্ট কাউন্টার" সম্পর্কে মন্তব্য করার মতো।

এটি স্পষ্টতই গেট অ্যান্ড সেট রয়েছে। আপনার যদি ব্যক্তিগত বেসরকারী থাকে, তবে এটি আপনার কাছে ব্যক্তিগত কীওয়ার্ড হিসাবে স্পষ্ট হবে be

মন্তব্যে মান যুক্ত করা উচিত, কোডটি আসলে কী সেটির মন্তব্য সংস্করণ নয়।

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