আমি বিমূর্ত ক্লাস ব্যবহার সম্পর্কে ইদানীং সমস্যায় পড়েছি।
কখনও কখনও একটি বিমূর্ত শ্রেণি আগাম তৈরি করা হয় এবং উত্পন্ন ক্লাসগুলি কীভাবে কাজ করবে তার একটি টেম্পলেট হিসাবে কাজ করে। এর অর্থ কম-বেশি, তারা কিছু উচ্চ স্তরের কার্যকারিতা সরবরাহ করে তবে উত্সযুক্ত শ্রেণীর দ্বারা প্রয়োগ করার জন্য নির্দিষ্ট বিশদটি রেখে যায়। বিমূর্ত শ্রেণি কিছু বিমূর্ত পদ্ধতি স্থাপন করে এই বিশদগুলির প্রয়োজনীয়তার সংজ্ঞা দেয়। এই জাতীয় ক্ষেত্রে, একটি বিমূর্ত শ্রেণি একটি নীলনকের মতো কাজ করে, কার্যকারিতার উচ্চ স্তরের বিবরণ বা যা আপনি এটি কল করতে চান। এটি নিজস্বভাবে ব্যবহার করা যাবে না, তবে উচ্চ স্তরের বাস্তবায়ন থেকে দূরে থাকা বিবরণগুলির সংজ্ঞা দিতে অবশ্যই বিশেষজ্ঞ হতে হবে।
অন্য কিছু সময়, এটি ঘটে যায় যে কিছু "উদ্ভূত" শ্রেণি তৈরির পরে বিমূর্ত শ্রেণিটি তৈরি করা হয়েছিল (যেহেতু পিতামাতা / বিমূর্ত শ্রেণি সেখানে নেই সেগুলি উত্পন্ন হয় নি, তবে আপনি কী জানেন আমার অর্থ কী)। এই ক্ষেত্রে, বিমূর্ত শ্রেণিটি সাধারণত এমন জায়গা হিসাবে ব্যবহৃত হয় যেখানে আপনি বর্তমান উত্পন্ন ক্লাসগুলিতে যে কোনও ধরণের প্রচলিত কোড রাখতে পারেন।
উপরোক্ত পর্যবেক্ষণগুলি করে, আমি ভাবছি যে এই দুটি ক্ষেত্রে কোনটির নিয়ম হওয়া উচিত। বিমূর্ত শ্রেণীর কাছে কোনও ধরণের বিবরণ কেবল তখনই উত্সাহিত করা উচিত যেহেতু বর্তমানে তারা সমস্ত উত্সযুক্ত শ্রেণীর মধ্যে সাধারণ হয়ে ওঠে? একটি সাধারণ স্তরের যা কোনও উচ্চ-স্তরের কার্যকারিতার অংশ নয়?
কোডটি যে বিমূর্ত শ্রেণীর জন্য নিজেই কোনও অর্থহীন নাও হতে পারে কেবল কারণ এটি উদ্ভূত শ্রেণীর জন্য সাধারণ বলে মনে হয়?
আমি একটি উদাহরণ দিতে পারি: বিমূর্ত শ্রেণির A এর একটি পদ্ধতি a () এবং একটি বিমূর্ত পদ্ধতি aq () রয়েছে। পদ্ধতি aq (), উভয় ডিগ্রি ডিগ্রি এ বি এবং এসি-তে, একটি পদ্ধতি খ () ব্যবহার করে। খ () এ এ স্থানান্তরিত করা উচিত? যদি হ্যাঁ, তবে যদি কেউ কেবল এ এর দিকে চেয়ে থাকে (আসুন ভেবে দেখি এবি এবং এসি নেই), খ () এর অস্তিত্ব কোনও তাত্পর্যপূর্ণ নয়! এটা কি একটা খারাপ জিনিস? কেউ কি বিমূর্ত ক্লাসে নজর রাখতে পেরেছেন এবং উত্পন্ন ক্লাসগুলি না দেখে কী চলছে তা বুঝতে সক্ষম হওয়া উচিত?
সত্যি কথা বলতে কি, এই জিজ্ঞাসার মুহুর্তে, আমি বিশ্বাস করি যে একটি বিমূর্ত শ্রেণি লেখা যা উদ্ভূত শ্রেণীর দিকে না তাকিয়েই বোঝা যায় এটি পরিষ্কার কোড এবং পরিষ্কার আর্কিটেকচারের বিষয়। An এমন কোনও বিমূর্ত শ্রেণীর ধারণাটি পছন্দ করবেন না যা কোনও ধরণের কোডের জন্য ডাম্পের মতো কাজ করে যা সমস্ত উত্সযুক্ত শ্রেণিতে সাধারণ হয়।
আপনার কী ধারণা / অনুশীলন?
Writing an abstract class that makes sense without having to look in the derived classes is a matter of clean code and clean architecture.
- কেন? এটি কি সম্ভব নয় যে, কোনও অ্যাপ্লিকেশন ডিজাইনিং এবং বিকাশকালে, আমি আবিষ্কার করেছি যে বেশ কয়েকটি ক্লাসের সাধারণ কার্যকারিতা রয়েছে যা প্রাকৃতিকভাবে একটি বিমূর্ত শ্রেণিতে সংশোধন করা যায়? উদ্ভূত শ্রেণীর জন্য কোনও কোড লেখার আগে আমি কি সর্বদা এটি অনুমান করার পক্ষে যথেষ্ট স্পষ্টবাদী হতে হবে? যদি আমি এই চমকপ্রদ হতে ব্যর্থ হই, তবে আমি কি এই জাতীয় রিফ্যাক্টরিং করা থেকে বারণ করছি? আমি কি আমার কোড টস আউট এবং আবার শুরু করতে হবে?