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