আমি যখন ক্লাসটি সাবক্লাস করি তখন প্রথম জিনিসগুলির মধ্যে একটি হ'ল সুরক্ষিত করার জন্য ব্যক্তিগত গোষ্ঠীগুলির গুচ্ছ পরিবর্তন করা
private
বনাম protected
পদ্ধতি সম্পর্কে কিছু যুক্তি :
private
পদ্ধতিগুলি পুনরায় ব্যবহারকে বাধা দেয়। একটি সাবক্লাস ব্যক্তিগত পদ্ধতিতে কোডটি ব্যবহার করতে পারে না এবং এটি আবার প্রয়োগ করতে পারে - বা মূলত ব্যক্তিগত পদ্ধতি ও সি এর উপর নির্ভরশীল পদ্ধতি (গুলি) পুনরায় প্রয়োগ করতে পারে।
অন্যদিকে, যে পদ্ধতিটি নয় এমন কোনও পদ্ধতি যা private
শ্রেণীর দ্বারা "বাইরের বিশ্বকে" সরবরাহ করা একটি এপিআই হিসাবে দেখা যায়, এই অর্থে যে তৃতীয় পক্ষের উপশ্রেণীগুলিকেও "বহিরাগত" হিসাবে বিবেচনা করা হয়, যেমন অন্য কেউ তার উত্তরে পরামর্শ দিয়েছিল ইতিমধ্যে।
এটা কি খারাপ জিনিস? - আমি তাই মনে করি না.
অবশ্যই, একটি (ছদ্ম-) সর্বজনীন এপিআই মূল প্রোগ্রামারটিকে লক করে। ইন্টারফেসগুলির রিফ্যাক্টরিংয়ে বাধা দেয়। তবে অন্যদিকে দেখা গেল, কেন কোনও প্রোগ্রামার তার নিজের "প্রয়োগের বিবরণ" এমনভাবে ডিজাইন করবেন না যা তার পাবলিক এপিআইয়ের মতো পরিষ্কার এবং স্থিতিশীল? তার কি এমন ব্যবহার করা উচিত private
যাতে তিনি তার "ব্যক্তিগত" কোডটি কাঠামোগত সম্পর্কে সুস্পষ্ট হয়ে উঠতে পারেন? ভাবছেন হয়ত সে পরে পরিষ্কার করে ফেলবে, কারও নজরে পড়বে না বলে? - না
প্রোগ্রামারকে তার "প্রাইভেট" কোডটিতেও কিছুটা চিন্তাভাবনা করা উচিত, যাতে এটি এমনভাবে গঠন করতে পারে যে এটি যথাসম্ভব যথাসময়ে পুনরায় ব্যবহারের অনুমতি দেয় বা এমনকি প্রচার করে। তারপরে বেসরকারী অংশগুলি ভবিষ্যতে এতটা বোঝা হয়ে উঠতে পারে না যতটা ভয় থাকে fear
(ফ্রেমওয়ার্ক) কোড অনেক আমি দেখতে একজন অসঙ্গত ব্যবহারের গ্রহণ private
: protected
, অ-ফাইনাল পদ্ধতি যা সবে একটি প্রাইভেট পদ্ধতি প্রতিনিধিরূপে চেয়ে বেশি কিছু করতে সাধারণভাবে পাওয়া যায়। protected
, চূড়ান্ত নয় এমন পদ্ধতিগুলি যার চুক্তি কেবলমাত্র ব্যক্তিগত ক্ষেত্রগুলিতে সরাসরি অ্যাক্সেসের মাধ্যমে পূরণ করা যেতে পারে।
এই পদ্ধতিগুলি যৌক্তিকভাবে ওভাররাইড / উন্নত করা যাবে না, যদিও প্রযুক্তিগতভাবে এটি (সংকলক) সুস্পষ্ট করার মতো কিছুই নেই।
প্রসারযোগ্যতা এবং উত্তরাধিকার চান? আপনার পদ্ধতি তৈরি করবেন না private
।
আপনার শ্রেণীর নির্দিষ্ট আচরণ পরিবর্তন করা চান না? আপনার পদ্ধতি তৈরি করুন final
।
সত্যিই আপনার পদ্ধতিটি কোনও নির্দিষ্ট, সু-সংজ্ঞায়িত প্রসঙ্গের বাইরে কল করা যায় না? আপনার পদ্ধতিটি তৈরি করুন private
এবং / অথবা আপনি কীভাবে অন্য একটি protected
মোড়কের পদ্ধতির মাধ্যমে পুনঃব্যবহারের জন্য প্রয়োজনীয় সু-সংজ্ঞায়িত প্রসঙ্গটি উপলব্ধ করতে পারেন সে সম্পর্কে ভাবেন ।
এজন্য আমি private
অল্প পরিমাণে ব্যবহার করার পক্ষে পরামর্শ দিই । এবং বিভ্রান্ত না private
করার জন্য final
। - কোনও পদ্ধতির প্রয়োগ যদি শ্রেণীর সাধারণ চুক্তির জন্য অতীব গুরুত্বপূর্ণ এবং সুতরাং অবশ্যই এটি প্রতিস্থাপন / ওভাররাইড করা উচিত নয়, এটি তৈরি করুন final
!
ক্ষেত্রগুলির জন্য, private
সত্যিই খারাপ নয়। যতক্ষণ না ক্ষেত্র (গুলি) যথাযথ পদ্ধতিগুলির মাধ্যমে যুক্তিসঙ্গতভাবে "ব্যবহৃত" হতে পারে (এটি নয় getXX()
বা setXX()
!)।