বৈশিষ্ট্য বনাম পদ্ধতি


135

তাত্ক্ষণিক প্রশ্ন: আপনি কখন বৈশিষ্ট্যগুলি ব্যবহার করবেন (সি # তে) এবং কখন আপনি পদ্ধতি ব্যবহার করার সিদ্ধান্ত নেন?

আমরা এই বিতর্কটি নিয়ে ব্যস্ত রয়েছি এবং এমন কিছু ক্ষেত্র খুঁজে পেয়েছি যেখানে এটি আমাদের সম্পত্তি বা পদ্ধতি ব্যবহার করা উচিত কিনা তা বিতর্কযোগ্য। একটি উদাহরণ হ'ল:

public void SetLabel(string text)
{
    Label.Text = text;
}

উদাহরণস্বরূপ, Labelএকটি এএসপিএক্স পৃষ্ঠায় একটি নিয়ন্ত্রণ। এমন কোনও নীতি আছে যা সিদ্ধান্তকে পরিচালনা করতে পারে (এক্ষেত্রে) এটিকে কোনও পদ্ধতি বা সম্পত্তি হিসাবে তৈরি করবে কিনা।

আমি সর্বাধিক সাধারণ এবং ব্যাপক উত্তরটি গ্রহণ করব, তবে এটি আমি যে উদাহরণ দিয়েছি তা স্পর্শ করে।


2
-1 এই প্রশ্নটি আগে জিজ্ঞাসা করা হয়েছে এবং উত্তর দেওয়া হয়েছে: স্ট্যাকওভারফ্লো
এলিমেন্ট

পদ্ধতি / ক্ষেত্র / সম্পত্তির উপকারিতা এবং কনসগুলি দীর্ঘ বিতর্ক তৈরি করতে পারে; বৈশিষ্ট্যের জন্য কিছু সাধারণ ব্যবহার: আপনি যখন ব্যক্তিগত / প্রোটিত ক্ষেত্রগুলি চান তবে একই সময়ে আপনি সেগুলি প্রকাশ করতে চান। আরেকটি ব্যবহার হ'ল কেবল বিবৃতি নয়, তবে এক্সপ্রেশনও (আপনার পছন্দ মতো ক্রিয়াগুলি) এমনকি if()চেক (এমএসডিএন অনুসারে) থাকে। তবে এটি মুশকিল, যেহেতু ভেরিয়েবল (সম্পত্তি) অ্যাক্সেসের পিছনে প্রসেসিং ব্যয় সম্পর্কে ব্যবহারকারী সর্বদা সচেতন না (যেমন কোডটি উপলভ্য নয়) এবং কঠোরতার কারণে একজনকে সম্পত্তিটি বেঞ্চমার্ক করতে হবে। ওহ, এবং একটি "বোনাস" আপনি বৈশিষ্ট্য সহ পয়েন্টার ব্যবহার করতে পারবেন না।
মিরিয়াজমা

উত্তর:


145

থেকে বৈশিষ্ট্য এবং পদ্ধতিগুলির মধ্যে নির্বাচন করে ক্লাস লাইব্রেরি ডেভেলপিং জন্য ডিজাইন নির্দেশিকা অধ্যায়:

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


3
যদিও আমি এর বেশিরভাগের সাথে একমত, আমি পার্শ্ব-প্রতিক্রিয়াগুলির অংশটি সঠিক বলে মনে করি না। উদাহরণস্বরূপ, "রঙ" প্রায়শই কোনও সামগ্রীর সম্পত্তি এবং এটির স্পষ্ট পার্শ্ব-প্রতিক্রিয়া থাকে (কোনও বস্তুর রঙ পরিবর্তন করা)। বৈশিষ্ট্যগুলি পরিবর্তনের সাথে অবজেক্টের স্থিতি পরিবর্তন করার সুস্পষ্ট পার্শ্ব-প্রতিক্রিয়া রয়েছে।
এরিক ফানকেনবাশ

46
মিস্ট্রি ম্যান চেঞ্জিং কালার হ'ল পছন্দসই প্রভাবটি পার্শ্ব প্রতিক্রিয়া নয়। পার্শ্ব প্রতিক্রিয়া এমন কিছু যা প্রাথমিক ক্রিয়াকলাপের উদ্দেশ্যে নয়।
মুহাম্মদ হাসান খান

2
@ মিস্ত্রি ম্যান: রঙ পরিবর্তন করা কোনও পার্শ্ব প্রতিক্রিয়া নয়, আমি এই উত্তরটির সাথে পুরোপুরি একমত
আহমেদ বলেছেন

2
"যেহেতু কম অভিজ্ঞ বিকাশকারীগণ সম্পত্তি ব্যবহারের পক্ষে আরও সহজ খুঁজে পান" " - যেমনটি আমি দেখছি এটিই সম্পত্তি প্রকাশের একমাত্র কারণ। তবে আমি ঠিক আছি?
সোসাবো

2
কোনও পদ্ধতি বনাম সম্পত্তি অভ্যন্তরীণ প্রয়োগের মধ্যে পার্থক্য কী। যখনই কোনও সম্পত্তি ব্যবহৃত হয় তখন কি কল স্ট্যাকের দিকে ধাক্কা দেওয়া হয়? তা না হলে আর কীভাবে পরিচালনা করা হয়?
প্রবীণ

57

হ্যাঁ, আপনি যা করছেন সবই যদি সেটি পেতে এবং সেট করা হয় তবে একটি সম্পত্তি ব্যবহার করুন।

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

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

এগুলি মূলত বিনিময়যোগ্য তবে ব্যবহারকারীর কাছে একটি সম্পত্তি সিগন্যাল দেয় যে প্রয়োগটি তুলনামূলকভাবে "সহজ"। ওহ এবং সিনট্যাক্সটি একটু ক্লিনার।

সাধারণভাবে বলতে গেলে, আমার দর্শনটি হ'ল আপনি যদি কোনও পদ্ধতির নাম লিখতে শুরু করেন যা শুরু বা সেট দিয়ে শুরু হয় এবং শূন্য বা একটি পরামিতি নেয় (যথাক্রমে) তবে এটি কোনও সম্পত্তির প্রধান প্রার্থী।


1
নিচে-ভোট দিয়েছে। এটি সঠিক নয়। গিটার বা সেটারের জটিলতা গিটার / সেটার কোডের মধ্যেই এনপ্যাপুলেটেড হয়। এটি মোটেই প্রাসঙ্গিক নয়, এমনকি যদি এটি "বেশ কয়েকটি ডেটা সদস্যকে প্রভাবিত করে" তবে এটি সত্য যে অ-মানক বা একাধিক পরামিতিগুলির জন্য একটি পদ্ধতির প্রয়োজন হবে, তবে অন্যথায় এই উত্তরটি সঠিক নয়।
Hal50000

প্রথম বাক্যে সমস্ত ব্যাখ্যা করা হয়েছে। সাবাস।
SWIIWII

13

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

পদ্ধতিগুলি একটি অপারেশন encapsulate।

সাধারণভাবে আমি ডেটাগুলির একক বিট বা বিক্রয় শ্রেণীর মতো ক্লাসে ছোট গণনা প্রকাশের জন্য সম্পত্তি ব্যবহার করি। যা শপিং কার্টে আইটেমের সংখ্যা এবং তাদের ব্যয় থেকে প্রাপ্ত।

আমি যখন কোনও অপারেশন তৈরি করি তখন ডেটাবেস থেকে ডেটা পুনরুদ্ধার করার মতো পদ্ধতিগুলি ব্যবহার করি। যে কোনও ক্রিয়াকলাপে চলমান অংশ রয়েছে, কোনও পদ্ধতির প্রার্থী।

আপনার কোডের উদাহরণে আমি এটি কোনও সম্পত্তিতে গুটিয়ে ফেলব যদি আমার এটির শ্রেণিযুক্ত বাইরের অ্যাক্সেসের প্রয়োজন হয়:

public Label Title 
{
   get{ return titleLabel;}
   set{ titleLabel = value;}
}

পাঠ্য সেট করা হচ্ছে:

Title.Text = "Properties vs Methods";

আমি যদি কেবলমাত্র লেবেলের পাঠ্য সম্পত্তি সেট করে থাকি তবে আমি এটি কীভাবে করব:

public string Title 
{
   get{ return titleLabel.Text;}
   set{ titleLabel.Text = value;}
}

পাঠ্য সেট করা হচ্ছে:

Title = "Properties vs Methods";

12

যদি আপনি নিজের বস্তুর প্রকৃত সম্পত্তি সেট করে থাকেন তবে আপনি একটি সম্পত্তি ব্যবহার করুন।

আপনি যদি কোনও কাজ / কার্যকারিতা সম্পাদন করে থাকেন তবে আপনি একটি পদ্ধতি ব্যবহার করেন।

আপনার উদাহরণে এটি একটি নির্দিষ্ট সম্পত্তি সেট করা হচ্ছে।

তবে, যদি আপনার কার্যকারিতা অ্যাপেন্ডটোলোবেল হয় তবে আপনি একটি পদ্ধতি ব্যবহার করবেন।


11

এমএসডিএন এর মাধ্যমে অনুসন্ধান করে, আমি সম্পত্তিগুলি বনাম পদ্ধতিগুলির বিষয়ে একটি রেফারেন্স পেয়েছি যা পদ্ধতিগুলি তৈরি করার জন্য কিছু দুর্দান্ত নির্দেশিকা সরবরাহ করে:

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

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

9

আপনার কেবলমাত্র নামটিই দেখতে হবে ... "সম্পত্তি"। এর মানে কী? অভিধানটি এটি বিভিন্ন উপায়ে সংজ্ঞায়িত করে তবে এই ক্ষেত্রে "একটি জিনিসের একটি প্রয়োজনীয় বা স্বতন্ত্র বৈশিষ্ট্য বা গুণমান" সেরা ফিট করে।

ক্রিয়াটির উদ্দেশ্য সম্পর্কে চিন্তা করুন। আপনি কি আসলে "প্রয়োজনীয় বা স্বতন্ত্র বৈশিষ্ট্য" পরিবর্তন বা পুনরুদ্ধার করছেন? আপনার উদাহরণে, আপনি একটি পাঠ্যবাক্সের সম্পত্তি সেট করতে একটি ফাংশন ব্যবহার করছেন। এটি নির্বোধ বলে মনে হচ্ছে, তাই না?

সম্পত্তি আসলে কাজ। তারা সবাই এক্সএক্সএক্সএক্স () এবং সেট এক্সএক্সএক্সএক্স () সেট করতে সংকলন করে। এটি কেবল সিনট্যাকটিক চিনির মধ্যে তাদের আড়াল করে, তবে এটি চিনির ফলে প্রক্রিয়াটির অর্থপূর্ণ অর্থ প্রদান করে।

গুণাবলী মত বৈশিষ্ট্য সম্পর্কে চিন্তা করুন। একটি গাড়ীর অনেক গুণ রয়েছে। রঙ, এমপিজি, মডেল ইত্যাদি all সমস্ত বৈশিষ্ট্য সেটযোগ্য নয়, কিছু গণনাযোগ্য able

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

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


9

সিনথেটিকালি বৈশিষ্ট্যগুলি আপনার বস্তুর বৈশিষ্ট্য। পদ্ধতিগুলি আপনার অবজেক্টের আচরণ।

লেবেল একটি বৈশিষ্ট্য এবং এটিকে সম্পত্তি হিসাবে তৈরি করার জন্য এটি আরও অর্থবোধ করে।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের ক্ষেত্রে আপনার আচরণের অংশ কী এবং নিছক একটি বৈশিষ্ট্য কী তা সম্পর্কে আপনার পরিষ্কার ধারণা থাকা উচিত।

গাড়ি {রঙ, মডেল, ব্র্যান্ড}

একটি গাড়ীর রঙ, মডেল এবং ব্র্যান্ডের বৈশিষ্ট্য রয়েছে তাই কোনও পদ্ধতি সেটকলার বা সেটমোডেল থাকা কোনও বোধগম্য নয় কারণ সিন্থেটিকভাবে আমরা গাড়িটিকে তার নিজস্ব রঙ সেট করতে বলি না।

সুতরাং আপনি যদি সম্পত্তি / পদ্ধতির কেসটিকে বাস্তব জীবনের অবজেক্টে ম্যাপ করেন বা সিনটিক ভিউ পয়েন্ট থেকে এটি দেখেন তবে আপনার বিভ্রান্তি সত্যিই দূরে যাবে।


4

সম্পত্তিগুলির জন্য আরও বড় প্লাস হ'ল ডিবাগিংয়ের সময় ভিজ্যুয়াল স্টুডিওতে সম্পত্তির মান দেখা যায়।


3

আমি 1 পরামিতি সহ অ্যাড / সেট পদ্ধতিগুলির জন্য বৈশিষ্ট্যগুলি ব্যবহার করতে পছন্দ করি । যদি প্যারামিটার বেশি হয় তবে পদ্ধতিগুলি ব্যবহার করুন।


3

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


3

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


3

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

নেট মধ্যে, বিশ্বে বৈশিষ্ট্যগুলি ব্যবহারের অন্যান্য জড়িত রয়েছে:

  • বৈশিষ্ট্যগুলি ডেটাবাইন্ডিংয়ে ব্যবহৃত হয়, যখন get_ / set_ পদ্ধতিগুলি হয় না।
  • সিরিলাইজেশনের প্রাকৃতিক প্রক্রিয়া হিসাবে এক্সএমএল সিরিয়ালাইজ ব্যবহারকারী বৈশিষ্ট্য।
  • প্রোপার্টিগ্রিড কন্ট্রোল এবং ইন্টার্ন আইকাস্টম টাইপডেস্কিটার দ্বারা সম্পত্তিগুলি অ্যাক্সেস করা হয় , আপনি যদি কাস্টম লাইব্রেরি লিখতে থাকেন তবে কার্যকরভাবে ব্যবহার করা যেতে পারে।
  • প্রোপার্টি দ্বারা নিয়ন্ত্রিত হয় গুণাবলী , এক এটা বুদ্ধিমানের মতো ব্যবহার অ্যাসপেক্ট ওরিয়েন্টড সফটওয়্যার ডিজাইন করতে পারবেন না।

সম্পত্তিগুলির ব্যবহার সম্পর্কে ভুল ধারণা (আইএমএইচও):

  • ছোট গণনা ফাঁস করতে ব্যবহৃত: কন্ট্রোল ডিজাইনার.স্লেেকশনরুলসের ব্লকটি 72 লাইনে চলে!
  • অভ্যন্তরীণ ডেটা স্ট্রাকচারগুলি বহিঃপ্রকাশের জন্য ব্যবহৃত: এমনকি কোনও সম্পত্তি কোনও অভ্যন্তরীণ ডেটা সদস্যকে মানচিত্র নাও দেয়, তবে এটি যদি আপনার শ্রেণীর কোনও বৈশিষ্ট্য হিসাবে থাকে তবে এটি সম্পত্তি হিসাবে ব্যবহার করতে পারে। ভাইরাস, যদিও এটি আপনার শ্রেণীর বৈশিষ্ট্যগুলির কোনও বৈশিষ্ট্য উপস্থাপন না করা হয়, ডেটা সদস্যদের মতো অ্যারে ফিরিয়ে দেওয়া (পরিবর্তে সদস্যদের গভীর অনুলিপি ফেরানোর জন্য পদ্ধতিগুলি ব্যবহার করা হয়))

এখানে উদাহরণে এটি আরও ব্যবসায়ের অর্থ সহ রচনা করা যেতে পারে:

public String Title
{
    set { Label.Text = text; }
}

2

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

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

অন্য যে কোনও পদ্ধতি পছন্দসই উপায়।

এটি কেবল শব্দার্থবিজ্ঞানের কথা নয়। বৈশিষ্ট্যগুলি ব্যবহারের অনুপযুক্ত অদ্ভুততা শুরু করা ভিজ্যুয়াল স্টুডিও ভিজ্যুয়াল ডিজাইনারে ঘটে।

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


1

বিল ওয়াগনারের কাছ থেকে কখন সম্পত্তি বনাম পদ্ধতি ব্যবহার করতে হবে তার জন্য এখানে গাইডলাইনের একটি ভাল সেট রয়েছে

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

  • এই অভ্যন্তরীণ ডেটা স্ট্রাকচারের কোনও রেফারেন্স ফিরে পাওয়া উচিত নয় (আইটেম 23 দেখুন) একটি পদ্ধতি একটি গভীর অনুলিপি ফিরে আসতে পারে এবং এই সমস্যাটি এড়াতে পারে।

* আমার সদৃশ একটি সদৃশ প্রশ্নের উত্তর নেওয়া।


শীর্ষ রেট এবং গ্রহণযোগ্য উত্তরগুলি এখানে stackoverflow.com/a/1294189/1551 ডাউনভোট কেন?
ক্রিস বাল্যান্স

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

0

এটি সহজ।

1: আপনি যখন ক্ষেত্রের মধ্যে সঞ্চয় করার আগে আপনার ডেটা যাচাই করা উচিত সম্পত্তি ব্যবহার করুন। সুতরাং এইভাবে সম্পত্তি আপনার ক্ষেত্রগুলির জন্য এনক্যাপসুলেশন সরবরাহ করে। কারণ আপনি যদি আপনার ক্ষেত্রগুলি ছেড়ে যান তবে সর্বজনীন ব্যবহারকারীরা আপনার ব্যবসায়ের প্রয়োজনীয়তা অনুসারে বৈধ হতে পারে বা না হতে পারে এমন কোনও মান নির্ধারণ করতে পারে যেমন বয়স ১৮ এর বেশি হতে হবে So সুতরাং মানটি সংশ্লিষ্ট ক্ষেত্রের আগে আমাদের তার বৈধতা পরীক্ষা করতে হবে। এইভাবে বৈশিষ্ট্যগুলি ডেটা উপস্থাপন করে।

2: পদ্ধতিটি ব্যবহার করুন যখন আপনি কিছু ক্রিয়া সম্পাদন করতে চান যেমন আপনি প্যারামিটার হিসাবে কিছু ডেটা সরবরাহ করছেন এবং আপনার পদ্ধতি সরবরাহিত মানগুলির ভিত্তিতে কিছু প্রক্রিয়াজাতকরণ করছে এবং প্রক্রিয়াজাত মানটিকে আউটপুট হিসাবে ফিরিয়ে দেবে। অথবা আপনি এই গণনা দ্বারা কিছু ক্ষেত্রের মান পরিবর্তন করতে চান। "এই পদ্ধতিতে ক্রিয়া প্রতিনিধিত্ব করে"।


-1

আমি জাভা থেকে এসেছি আমি ব্যবহার করি .. সেট .. কিছুক্ষণের জন্য পদ্ধতি।

আমি যখন কোড লিখি, তখন আমি আমার নিজের কাছেই জিজ্ঞাসা করি না: "এই ডেটা অ্যাক্সেস করা সহজ বা ভারী প্রক্রিয়া দরকার?" কারণ জিনিসগুলি পরিবর্তিত হতে পারে (আজ এই সম্পত্তি পুনরুদ্ধার করা সহজ, টমোনরোতে কিছু বা ভারী প্রক্রিয়া প্রয়োজন হতে পারে)।

আজ আমার কাছে একটি পদ্ধতি সেটএজ (অন্তর্নিহিত বয়স) টোমেনরো রয়েছে আমারও পদ্ধতি সেটেজ (তারিখের জন্ম তারিখ) থাকবে যা জন্ম তারিখ ব্যবহার করে বয়সের গণনা করে।

আমি খুব হতাশ হয়েছি যে সংকলকটি গেট অ্যান্ড সেট এ সম্পত্তি রূপান্তরিত করে তবে আমার গেট ... এবং সেট .. পদ্ধতিগুলি একই হিসাবে বিবেচনা করে না।

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