আশা করি, আরও ভাল প্রোগ্রামার হওয়ার জন্য আমি রবার্ট মার্টিনের " ক্লিন কোড " পড়ছি । যদিও এখন পর্যন্ত এটির কোনওটিই সত্যিই স্থলভাগ হয়নি তবে আমি কীভাবে অ্যাপ্লিকেশনগুলি ডিজাইন করি এবং কোড লিখি সে সম্পর্কে আমাকে আলাদাভাবে ভাবতে বাধ্য করেছে।
বইয়ের একটি অংশ রয়েছে যার সাথে আমি কেবল একমত নই, তবে বিশেষ করে ইন্টারফেসের নামকরণের সম্মেলনগুলির ক্ষেত্রে আমার কাছে তা বোঝায় না। এখানে পাঠ্যটি সরাসরি বই থেকে নেওয়া হয়েছে। আমি এর দিকটি গাed় করে তুলেছি যে আমি বিভ্রান্তি পেয়েছি এবং এ সম্পর্কে স্পষ্টতা চাই।
আমি ইন্টারনফেসকে অলংকৃত ছাড়াই পছন্দ করি। পূর্ববর্তী আমি, আজকের লিগ্যাসি ওয়েডগুলিতে খুব সাধারণ, সবচেয়ে খারাপের দিক থেকে সবচেয়ে খারাপ এবং খুব খারাপ তথ্য। আমি চাই না যে আমার ব্যবহারকারীরা জেনে রাখুন যে আমি তাদের একটি ইন্টারফেস দিচ্ছি ।
সম্ভবত এটি কেবলমাত্র আমি একজন ছাত্র, বা সম্ভবত কোনও পেশাদার বা দল ভিত্তিক প্রোগ্রামিং করিনি কারণ আমি এটি চাইছি এটি ব্যবহারকারী একটি ইন্টারফেস know একটি ইন্টারফেস বাস্তবায়ন এবং একটি শ্রেণি প্রসারিত মধ্যে একটি বড় পার্থক্য আছে।
সুতরাং, আমার প্রশ্নটি এটিকে উত্সাহিত করে, "কোডের কিছু অংশ একটি ইন্টারফেসের প্রত্যাশার বিষয়টি আমরা কেন লুকিয়ে রাখব ?"
সম্পাদন করা
উত্তরের জবাবে:
যদি আপনার ধরণটি একটি ইন্টারফেস হয় বা শ্রেণিটি আপনার ব্যবসা হয় তবে আপনার কোড ব্যবহার করা কারও ব্যবসা নয়। সুতরাং এই থ্রিম পার্টি কোডে আপনার কোডের বিশদটি ফাঁস করা উচিত নয়।
প্রদত্ত প্রকারটি ইন্টারফেস বা তৃতীয় পক্ষের কোডের শ্রেণি কিনা সে সম্পর্কে বিশদটি কেন আমি "ফাঁস" করব না? আমার কোডটি ব্যবহার করে তৃতীয় পক্ষের বিকাশকারীরা কি গুরুত্বপূর্ণ নয় যে তারা কোনও ইন্টারফেস বাস্তবায়ন করবে বা শ্রেণি প্রসারিত করবে কিনা তা জানতে? পার্থক্যগুলি কি এতটা গুরুত্বপূর্ণ নয় যতটা আমি তাদের মনে রাখছি?
to know whether they will be implementing an interface or extending a class
: হ্যাঁ, তবে আপনার কোডটির বেশিরভাগ ব্যবহারকারীরা এটি কল করবে, এটি বাস্তবায়ন করবে না বা প্রসারিত করবে না এবং এটি আসলে কী তা যত্নশীল হতে পারে না।