বিনা পদ্ধতিতে আপনি কী ক্লাস বলছেন?
উদাহরণ স্বরূপ,
class A
{
public string something;
public int a;
}
উপরে কোনও পদ্ধতি ছাড়াই একটি শ্রেণি রয়েছে। এই ধরণের শ্রেণীর কোনও বিশেষ নাম আছে?
বিনা পদ্ধতিতে আপনি কী ক্লাস বলছেন?
উদাহরণ স্বরূপ,
class A
{
public string something;
public int a;
}
উপরে কোনও পদ্ধতি ছাড়াই একটি শ্রেণি রয়েছে। এই ধরণের শ্রেণীর কোনও বিশেষ নাম আছে?
উত্তর:
বেশিরভাগ সময়: একটি অ্যান্টি প্যাটার্ন।
কেন? কারণ এটি "অপারেটর" ক্লাস এবং ডেটা স্ট্রাকচারের সাথে প্রসেসরিয়াল প্রোগ্রামিং সংযুক্ত করে। আপনি ডেটা এবং আচরণ পৃথক করেন যা একেবারেই ভাল না।
প্রায়শই সময়: একটি ডিটিও (ডেটা ট্রান্সফার অবজেক্ট)
কোনও ব্যবসায় / ডোমেন অবজেক্ট থেকে উত্পন্ন ডেটা আদান-প্রদানের জন্য শুধুমাত্র ডেটাস্ট্রাকচারগুলি পড়ুন।
কখনও কখনও: শুধু তথ্য কাঠামো।
ভাল কখনও কখনও, আপনার কাছে কেবল সেই ডেটাগুলি ধরে রাখতে সেই কাঠামোগুলি থাকতে হবে যা কেবল সরল এবং সাধারণ এবং এতে কোনও পরিচালনা নেই has তবে আমি সর্বজনীন ক্ষেত্রগুলি ব্যবহার না করে অ্যাকসেসর (গেটার্স এবং সেটটার) ব্যবহার করব।
আমি এটি কল করেছি struct
বা record
কারণ এটি ডেটা সঞ্চয় করার জন্য ব্যবহৃত হয় এবং এটি C
আপনি যেমন দেখতে পান তেমন ভাষায় এটি খুব সাধারণ : কাঠামো (সি প্রোগ্রামিং ভাষা) । সুতরাং ব্যক্তিগতভাবে আমি struct
আরও উপযুক্ত এবং পাঠযোগ্য এমন শ্রেণীর পরিবর্তে একটি ব্যবহার পছন্দ করব :
struct A
{
public string something;
public int a;
}
অন্যরা যেমন বলেছিল তারা সাধারণত ডিটিও (ডেটা ট্রান্সফার অবজেক্ট) হিসাবে ব্যবহৃত হয় ।
এগুলি সমান ওল্ড __ অবজেক্টস (PO_Os) হিসাবে খালি যেখানে জাভা বা সি বা সিআইএল বা আপনি যে কোনও ভাষা ব্যবহার করছেন known
যদি সেগুলি যোগাযোগের জন্য সাধারণ ডেটা ব্লক হিসাবে ব্যবহার করা হয়, তবে তারা ডেটা স্থানান্তর অবজেক্টস (ডিটিও) হিসাবে পরিচিত হতে পারে ।
যদি তারা কিছু বাহ্যিকভাবে সরবরাহিত ডেটা উপস্থাপন করে তবে তারা সত্তা হিসাবে পরিচিত হতে পারে ।
আমি এই জাতীয় শ্রেণিকে একটি পরিবর্তনীয় ডেটা হোল্ডার বলব এবং কখনও কখনও জেনেরিক ফর্ম ব্যবহার করেছি:
class DataHolder<T>
{
public T dat;
}
মনে রাখবেন যে dat
কোনও সম্পত্তির অভ্যন্তরে মোড়ানো কার্যকারিতা হ্রাস করবে এবং কোনও উপকার দেবে না, কারণ কোনও সম্পত্তি অ্যাক্সেসর (ফিল্ডটি পড়া / লেখার ক্ষেত্র বাদে) করতে পারে এমন কিছুই নেই যা কিছু বাস্তবায়ন ভঙ্গ করবে না। তদ্ব্যতীত, (বা এটি যদি স্ট্রাক্ট, এর ক্ষেত্রগুলি সহ) ব্যবহার করে Interlocked
পদ্ধতিগুলি ব্যবহার করা প্রয়োজন হতে পারে dat
তবে dat
কোনও সম্পত্তিতে আবৃত থাকলে তা সম্ভব হবে না ।
মনে রাখবেন যে পরিবর্তনীয় ডেটা হোল্ডারগুলি এমন ধরণের (মুটোটেবল বা না) জন্য দরকারী হতে পারে যা ডেটা ধরে রাখা দরকার , তারা নিরাপদে ডেটা এক্সচেঞ্জের জন্য একইভাবে ব্যবহার করতে পারবেন না যেমন অপরিবর্তনীয় টাইপগুলি। উদাহরণস্বরূপ, একটি বিবৃতি যেমন:
myData = myCollection.GetData(myKey);
কোনও GetData
পরিবর্তনযোগ্য শ্রেণির প্রকার বা কোনও স্ট্রাক্ট ("পরিবর্তনযোগ্য" বা না) ফিরিয়ে দিলে এর সুস্পষ্ট অর্থ হতে পারে যার মধ্যে পরিবর্তনীয় ডেটার উল্লেখ নেই। যদি এটি কোনও পরিবর্তনীয় শ্রেণীর বস্তুটি ফেরত দেয় তবে তবে এটি স্পষ্ট নয় যে সেই অবজেক্টের কোনও পরিবর্তন নিয়মিতভাবে অন্তর্নিহিত সংগ্রহের দ্বারা উপেক্ষা করা হবে, ধারাবাহিকভাবে এটিতে পরিষ্কার আপডেট হতে পারে, বা কিছু অস্বচ্ছল বা অনির্দেশ্য আচরণের মিটিং বা বর্ণনার কারণ নয়।
কেউ যদি কোনও মিউচ্যুয়াল অবজেক্টে সংগ্রহের তথ্য ফেরত পেতে চান তবে সঠিক দৃষ্টান্তটি প্রায়শই এমন কিছু হতে পারে:
var myData = new WhateverType();
myCollection.GetData(myKey, myData);
myData.ModifySomehow();
myCollection.StoreData(myKey, myData);
যে পদ্ধতির ব্যবহার করে, সেখানে একটি স্পষ্ট ইঙ্গিত যে GetData
কারণ হবে myData
সংগ্রহ থেকে ডেটার সাথে জনবহুল হবে, কিন্তু myCollection
এটা একটি রেফারেন্স রাখতে একবার ফাংশন সম্পূর্ণ ছিল প্রত্যাশিত হবে না, না এটা অন্য কোন উদ্দেশ্যে ব্যবহার করবে। StoreData
একইভাবে myData
কোনও রেফারেন্স না রেখে তথ্যটিকে তার নিজস্ব অভ্যন্তরীণ ডেটা কাঠামোতে অনুলিপি করতে হবে । মনে রাখবেন যে এই পদ্ধতির একটি সুবিধা হ'ল ক্লায়েন্ট কোডটি যদি কোনও লুপের মধ্যে অনেকগুলি ডেটা আইটেম পড়তে থাকে তবে এটি নিরাপদে myData
লুপের বাইরের একটি উদাহরণ তৈরি করতে পারে এবং তারপরে প্রতিবার একই ঘটনাটিকে পুনরায় ব্যবহার করতে পারে। তেমনি, myCollection
কোনও নতুন উদাহরণ তৈরি না করেই কীটির সাথে যুক্ত অবজেক্ট ইনস্ট্যান্সটি পুনরায় ব্যবহার করতে সক্ষম হতে পারেন (পাস-ইন ইভেন্ট থেকে ডেটা অনুলিপি করা)।