অন্যদের হিসাবে যেমন বলা হয়েছে, বেসরকারী ভেরিয়েবলগুলি মিস-ইউজগুলি এড়াতে ভাল যা অবজেক্টটিকে একটি বেমানান স্থিতিতে নিয়ে যায় এবং বাগগুলি এবং অপ্রত্যাশিত ব্যতিক্রমগুলি ট্র্যাক করা শক্ত।
তবে অন্যদিকে, অন্যদের দ্বারা যা বেশিরভাগ উপেক্ষা করা হয়েছে তা হ'ল সুরক্ষিত ক্ষেত্র।
প্রসারিত উপ-শ্রেণীর সুরক্ষিত ক্ষেত্রগুলিতে সম্পূর্ণ অ্যাক্সেস থাকবে, অবজেক্টটিকে এমন ভঙ্গুর করে তুলবে যেন এই ক্ষেত্রগুলি সর্বজনীন ছিল, তবে সেই ভঙ্গুরতাটি প্রসারিত শ্রেণীর স্ব-সীমাবদ্ধ সীমাবদ্ধ (যদি না এ জাতীয় ক্ষেত্রকে আরও বেশি উন্মুক্ত করে)।
সুতরাং, সর্বজনীন ক্ষেত্রগুলিকে ভাল হিসাবে বিবেচনা করা শক্ত, এবং তারিখের জন্য এগুলি ব্যবহার করার একমাত্র কারণ হ'ল কনফিগারেশন প্যারামিটার হিসাবে ব্যবহৃত ক্লাসগুলির জন্য (অনেকগুলি ক্ষেত্র এবং একটি যুক্তিযুক্ত একটি খুব সাধারণ শ্রেণি, যাতে ক্লাসটি একাকী প্যারামিটার হিসাবে পাস করা হয় কিছু পদ্ধতি)।
তবে অন্যদিকে, ব্যক্তিগত ক্ষেত্রগুলি অন্য কোডের কাছে আপনার কোডের নমনীয়তা হ্রাস করে।
নমনীয়তা বনাম ঝামেলা, উপকারিতা এবং কনস:
সুরক্ষিত ক্ষেত্রগুলি সহ ভ্যানিলা শ্রেণিতে আপনার কোড দ্বারা ইনস্ট্যান্ট করা অবজেক্টগুলি নিরাপদ এবং এটি আপনার একমাত্র দায়িত্ব।
অন্যদিকে, আপনার কোড ব্যবহারকারীদের দ্বারা তাত্ক্ষণিকভাবে সুরক্ষিত ক্ষেত্রগুলি সহ আপনার শ্রেণীর প্রসারিত অবজেক্টগুলি তাদের দায়িত্ব, আপনার নয়।
সুতরাং, সুরক্ষিত ক্ষেত্রগুলি / পদ্ধতিগুলি সঠিকভাবে নথিবদ্ধ নয় বা ব্যবহারকারীরা যদি সত্যিই বুঝতে না পারেন যে এই ক্ষেত্রগুলি এবং পদ্ধতিগুলি কীভাবে ব্যবহার করা উচিত, তবে নিজের এবং আপনার জন্য অপ্রয়োজনীয় ঝামেলা করার একটা ভাল সম্ভাবনা রয়েছে।
অন্যদিকে, বেশিরভাগ জিনিসগুলিকে ব্যক্তিগত করে তোলা ব্যবহারকারীর নমনীয়তা কমিয়ে দেয় এবং রক্ষণাবেক্ষণকৃত বিকল্পগুলি সন্ধান করতে এড়িয়ে যেতে পারে, কারণ তারা জিনিসগুলি কেবল তাদের মতো ঘটানোর জন্য কাঁটাচামচ তৈরি করতে এবং বজায় রাখতে না পারে।
সুতরাং, ব্যক্তিগত, সুরক্ষিত এবং পাবলিকের মধ্যে একটি ভাল ভারসাম্য হ'ল সত্যই গুরুত্বপূর্ণ।
এখন, ব্যক্তিগত এবং সুরক্ষিতের মধ্যে সিদ্ধান্ত নেওয়াটাই আসল সমস্যা।
সুরক্ষিত কখন ব্যবহার করবেন?
আপনি যখনই কোনও ক্ষেত্রটি বুঝতে পারবেন তবে এটি নমনীয় হতে পারে, তবে এটি সুরক্ষিত হিসাবে কোড করা উচিত। এই নমনীয়তাটি হ'ল: নাল হয়ে যাওয়া থেকে (যেখানে নাল সর্বদা যাচাই করা হয় এবং ব্যতিক্রমগুলি ছুঁড়ে না দিয়ে বৈধ রাষ্ট্র হিসাবে স্বীকৃত হয়), আপনার ক্লাসের প্রাক্তন দ্বারা ব্যবহারের আগে বাধা থাকা পর্যন্ত। > = 0, <100 ইত্যাদি, এবং সর্বাধিক সতর্কতা বার্তা নিক্ষেপ করে ওভার / আন্ডারফ্লোড মানগুলির জন্য স্বয়ংক্রিয়ভাবে স্থির।
সুতরাং, এই জাতীয় সুরক্ষিত ক্ষেত্রের জন্য আপনি একটি গিটার তৈরি করতে পারেন এবং কেবল এটি ব্যবহার করতে পারেন (ফিল্ড ভেরিয়েবলটি সরাসরি ব্যবহারের পরিবর্তে) অন্য ব্যবহারকারীরা যদি তাদের নির্দিষ্ট কোডটিতে আরও নমনীয়তা চান তবে এটি ব্যবহার করতে পারে না, আমার উদাহরণটি এর মতো হতে পারে : যদি তারা নেতিবাচক মানগুলি তাদের বর্ধিত শ্রেণিতে সূক্ষ্মভাবে কাজ করতে চায়।