আমার যখন আদিম ধরণের উপর দিয়ে রেপার ক্লাসে যাওয়া উচিত? বা মোড়ক / আদিম ধরণের মধ্যে কোন পরিস্থিতিতে আমার চয়ন করা উচিত?
উত্তর:
অন্যরা উল্লেখ করেছে যে নির্দিষ্ট কিছু কাঠামো যেমন Collections
বস্তুর প্রয়োজন হয় এবং বস্তুগুলির তাদের আদিম অংশগুলির (মেমরি এবং বক্সিং) এর চেয়ে বেশি ওভারহেড থাকে।
আরেকটি বিবেচনা হ'ল:
রাষ্ট্র বা ফাংশন নির্দেশিত করতে কোনও পদ্ধতি / নির্মাতার কাছে অবজেক্টগুলিকে প্রারম্ভিক null
পাঠানো বা null
পরামিতিগুলি প্রেরণ করা সহজ । এটি আদিমদের দিয়ে করা যায় না।
অনেক প্রোগ্রামার এটিকে বোঝাতে 0 (ডিফল্ট) বা -1 এ সংখ্যার সূচনা করে তবে দৃশ্যের উপর নির্ভর করে এটি ভুল বা বিভ্রান্তিকর হতে পারে।
এটি এমন কিছুর জন্য দৃশ্যও সেট করবে NullPointerException
যখন কোনও কিছু ভুলভাবে ব্যবহৃত হচ্ছে যা লাইন থেকে কিছু নির্বিচার বাগের চেয়ে অনেক বেশি প্রোগ্রামার-বান্ধব।
সাধারণত, যদি আপনার কোনও কারণে (যেমন কোনও সংগ্রহের মধ্যে রাখার জন্য) কোনও জিনিস প্রয়োজন না হয় তবে আপনার আদিম প্রকারগুলি ব্যবহার করা উচিত । তারপরেও, একটি পৃথক পদ্ধতির বিবেচনা করুন যা আপনি সংখ্যাসূচক পারফরম্যান্সকে সর্বাধিক করতে চান তবে কোনও জিনিসের প্রয়োজন হয় না। এটি ডকুমেন্টেশন দ্বারা পরামর্শ দেওয়া হয় এবং এই নিবন্ধটি দেখায় যে কীভাবে অটো-বক্সিং একটি বৃহত পারফরম্যান্সের পার্থক্য সৃষ্টি করতে পারে।
Integer
আরও সুসংগঠিত তা ব্যাখ্যা করুন int
।
আমার মতে, যদি আমার শ্রেণীর সদস্যরা মোড়কের চলক হয় তবে এটি ডিফল্ট মানগুলিতে নির্ভর করে না, যা বিকাশকারীদের বন্ধুত্বপূর্ণ আচরণ।
ঘ।
class Person {
int SSN ; // gets initialized to zero by default
}
ঘ।
class PersonBetter {
Integer SSN; //gets initialized to null by default
}
প্রথম ক্ষেত্রে, আপনি এসএসএন মান নির্বিঘ্নিত রাখতে পারবেন না। আপনি এটি ব্যবহারের চেষ্টা করার আগে মানটি সেট করা হয়েছে কিনা তা যদি আপনি পরীক্ষা না করে থাকেন তবে এটির ক্ষতি হতে পারে।
দ্বিতীয় ক্ষেত্রে, আপনি নাল দিয়ে এসএসএন শুরু করতে পারেন। যা নলপয়েন্টারএক্সেপশন বাড়ে পারে কিন্তু অজান্তে এসএসএন হিসাবে ডিফল্ট মান (শূন্য) ডাটাবেসে সন্নিবেশ করানোর চেয়ে ভাল তবে যখনই আপনি এসএসএন ক্ষেত্র আরম্ভ না করে এটি ব্যবহার করার চেষ্টা করবেন।
PersonBuilder
একটি ব্যতিক্রম ছুঁড়ে ফেলুন যদি Person
উদাহরণটি পাওয়ার জন্য এসএসএন "বিল্ড" কল করার আগে সেট করা না থাকে । আমি মনে করি এই ধরণের জিনিস অত্যধিক, তবে এটি জাভা ভাষা সঠিক নিদর্শনগুলির জন্য প্রচার করে।
আপনার যদি প্রয়োজন হয় তবে আমি কেবল মোড়কের ধরণগুলি ব্যবহার করব।
এগুলি ব্যবহারের ক্ষেত্রে আপনি যে পরিমাণে তেমন উপকার পাবেন না Objects
।
এবং, আপনি মেমরির ব্যবহার এবং বক্সিং / আনবক্সিং সময় ব্যয় করে ওভারহেড হারাবেন।
কার্যত আমি এমন একটি পরিস্থিতির মুখোমুখি হয়েছিলাম যেখানে মোড়কের ক্লাসের ব্যবহার ব্যাখ্যা করা যেতে পারে।
আমি একটি সার্ভিস ক্লাস তৈরি করেছি যার long
টাইপ ভেরিয়েবল ছিল
long
- যখন আরম্ভ করা হয় না, তখন এটি 0 তে সেট করা হবে - জিইউআইতে প্রদর্শিত হলে এটি ব্যবহারকারীকে বিভ্রান্ত করবে Long
- যখন আরম্ভ হয় না, তখন সেট করা থাকবে null
- এই নাল মানটি জিইউতে প্রদর্শিত হবে না।এটি প্রযোজ্য Boolean
যেখানে মানগুলি যখন আমরা আদিম ব্যবহার করি তখন আরও বিভ্রান্তিকর হতে পারে boolean
(ডিফল্ট মানটি মিথ্যা হিসাবে)।
সংগ্রহগুলি সাধারণ জাভা মোড়কের জিনিসগুলির জন্য সাধারণ ক্ষেত্রে। তবে আপনি কোডটি (মান অবজেক্ট) এর মধ্যে র্যাপারকে আরও সুনির্দিষ্ট অর্থ দেওয়ার কথা বিবেচনা করতে পারেন।
আইএমএইচও যখন কোডটির পাঠযোগ্যতা এবং রক্ষণাবেক্ষণের জন্য উত্সাহিত হয় তখন মান অবজেক্টগুলি ব্যবহার করার সুবিধা প্রায়শই রয়েছে। কিছু নির্দিষ্ট দায়বদ্ধতার সাথে অবজেক্টের অভ্যন্তরে সাধারণ ডেটা স্ট্রাকচার মোড়ানোর ফলে কোডটি প্রায়শই সরল করে। এটি এমন একটি বিষয় যা ডোমেন-চালিত ডিজাইনে খুব গুরুত্বপূর্ণ ।
অবশ্যই পারফরম্যান্স ইস্যু আছে, তবে আমি সঠিক উপাত্ত দিয়ে পারফরম্যান্সটি পরিমাপ করার এবং সমস্যাযুক্ত ক্ষেত্রের দিকে আরও নির্দেশিত ক্রিয়া না করার আগ পর্যন্ত আমার এড়িয়ে যাওয়ার প্রবণতা রয়েছে। কোডটিও বুঝতে সহজ হয় তবে পারফরম্যান্সের বিষয়টি বোঝা আরও সহজ হতে পারে।
সংখ্যার গণনা দ্বারা আধিপত্য রয়েছে এমন অ্যাপ্লিকেশনগুলির কার্য সম্পাদন আদিম ব্যবহার থেকে প্রচুর উপকার পেতে পারে।
আদিম ধরণের, একটি == অপারেটর ব্যবহার করে তবে মোড়কের জন্য পছন্দসই পছন্দটি সমান () পদ্ধতিতে কল করা।
"আদিম ধরণেরগুলি ক্ষতিকারক হিসাবে বিবেচিত" কারণ তারা "পদ্ধতিগত শব্দার্থকে একটি অন্যথায় অভিন্ন বস্তু-কেন্দ্রিক মডেলের সাথে মিশ্রিত করে।
অনেক প্রোগ্রামার এটিকে বোঝাতে 0 (ডিফল্ট) বা -1 এ সংখ্যার সূচনা করে তবে দৃশ্যের উপর নির্ভর করে এটি ভুল বা বিভ্রান্তিকর হতে পারে।
আপনি যদি সংগ্রহগুলি ব্যবহার করতে চান তবে আপনাকে অবশ্যই র্যাপার ক্লাস ব্যবহার করতে হবে ।
প্রাথমিক প্রকারগুলি, অ্যারের জন্য ব্যবহৃত হয়। এছাড়াও, এমন ডেটা উপস্থাপন করা যা কোনও আচরণই রাখে না, উদাহরণস্বরূপ, কাউন্টার বা বুলিয়ান শর্ত।
অটোবক্সিংয়ের পর থেকে "কখন আদিম বা মোড়ক ব্যবহার করতে হবে" সীমান্তটি বেশ ঝাপসা হয়ে গেছে।
তবে মনে রাখবেন, র্যাপারগুলি হ'ল অবজেক্টস, তাই আপনি সমস্ত অভিনব জাভা বৈশিষ্ট্যগুলি পান। উদাহরণস্বরূপ, আপনি পূর্ণসংখ্যার অবজেক্ট তৈরি করতে প্রতিবিম্ব ব্যবহার করতে পারেন, তবে কোনও মানগুলি নয়। মোড়ক ক্লাসেও ভ্যালুওফের মতো পদ্ধতি রয়েছে।
আপনি যদি একটি মান টাইপ তৈরি করতে চান। প্রোডাক্ট এসকিউ বা এয়ারপোর্টকোডের মতো কিছু।
যখন কোনও আদিম ধরণের (আমার উদাহরণগুলির স্ট্রিং) সাম্যতা সংজ্ঞায়িত করে, আপনি সমতাটিকে ওভাররাইড করতে চাইবেন।
জাভাতে আদিম মানগুলি আপত্তি করে না। এই মানগুলি অবজেক্ট হিসাবে চালিত করার জন্য জাভা.এলং প্যাকেজ প্রতিটি আদিম ডাটা টাইপের জন্য একটি র্যাপার ক্লাস সরবরাহ করে।
সমস্ত র্যাপার ক্লাস চূড়ান্ত। শুরু করা যেতে পারে এমন সমস্ত র্যাপার ক্লাসের অবজেক্টটি অপরিবর্তনীয় যার অর্থ মোড়কের বস্তুর মান পরিবর্তন করা যায় না।
যদিও, অকার্যকর শ্রেণিটিকে একটি মোড়কের শ্রেণি হিসাবে বিবেচনা করা হয় তবে এটি কোনও আদিম মানকে আবদ্ধ করে না এবং সূচনাযোগ্য নয়। এটিতে সার্বজনীন নির্মাতা নেই, এটি কেবল কীওয়ার্ড অকার্যকরভাবে উপস্থাপন করে এমন কোনও শ্রেণি অবজেক্টকে বোঝায়।
আদিম প্রকারগুলি কখন ব্যবহার করবেন
র্যাপার ক্লাস কখন ব্যবহার করবেন
থেকে https://medium.com/@bpnorlander/java- સમજ বোঝার -প্রিমিটিভ- টাইপস- এবং- wrapper-objects-a6798fb2afe9