আমি আমার প্রোগ্রামে অবজেক্টযোগ্য বস্তু তৈরির সুবিধাগুলি দেখছি। আমি যখন সত্যিই গভীরভাবে আমার অ্যাপ্লিকেশনটির জন্য একটি ভাল ডিজাইনের বিষয়ে চিন্তাভাবনা করি তখন আমি প্রায়শই স্বাভাবিকভাবেই আমার অনেকগুলি অব্যবহারযোগ্য স্থানে পৌঁছে যাই। এটি প্রায়শই এমন স্থানে আসে যেখানে আমি আমার সমস্ত বস্তুগুলিকে অপরিবর্তনীয় রাখতে চাই ।
এই প্রশ্নটি একই ধারণার সাথে সম্পর্কিত তবে কোনও উত্তর হ'ল অপরিবর্তনীয়তার পক্ষে ভাল পদ্ধতির কী এবং আসলে কখন এটি ব্যবহার করা যায়। কিছু ভাল পরিবর্তনযোগ্য ডিজাইনের নিদর্শন আছে? সাধারণ ধারণাটি "অবজেক্টগুলিকে অপরিবর্তনীয় করে তোলে যতক্ষণ না আপনার পরিবর্তনের জন্য তাদের সম্পূর্ণরূপে প্রয়োজন হয় না" যা অনুশীলনে অকেজো।
আমার অভিজ্ঞতা হ'ল অপরিবর্তনীয়তা আমার কোডটিকে আরও বেশি করে কার্যকরী দৃষ্টান্তের দিকে চালিত করে এবং এই অগ্রগতি সর্বদা ঘটে:
- তালিকাগুলি, মানচিত্রের মতো ডেটা স্ট্রাকচারের জন্য আমি ক্রমাগত (ক্রিয়ামূলক অর্থে) প্রয়োজন বোধ করি start
- ক্রস রেফারেন্সের সাথে কাজ করা অত্যন্ত অসুবিধাজনক (যেমন গাছের নোড তার বাচ্চাদের রেফারেন্স করার সময় শিশুরা তাদের পিতামাতাকে রেফারেন্স করে) যা আমাকে ক্রস রেফারেন্সগুলি মোটেও ব্যবহার না করে দেয় যা আমার ডেটা স্ট্রাকচার এবং কোডটিকে আরও কার্যকরী করে তোলে।
- উত্তরাধিকার কোনও অর্থবহুল হয়ে যায় এবং আমি পরিবর্তে রচনাটি ব্যবহার শুরু করি।
- ওওপি-র সম্পূর্ণ বুনিয়াদি ধারণাগুলি যেমন এনক্যাপসুলেশন বিচ্ছিন্ন হতে শুরু করে এবং আমার বিষয়গুলি ফাংশনগুলির মতো দেখতে শুরু করে।
এই মুহুর্তে আমি কার্যতঃ ওওপি দৃষ্টান্ত থেকে আর কিছুই ব্যবহার করছি না এবং খাঁটি কার্যকরী ভাষায় স্যুইচ করতে পারি। এইভাবে আমার প্রশ্ন: ভাল অপরিবর্তনীয় ওওপি নকশার জন্য কি কোনও ধারাবাহিক পন্থা রয়েছে বা সবসময় এমন হয় যে আপনি যখন অপরিবর্তনীয় ধারণাটিকে তার সম্পূর্ণ সম্ভাবনার দিকে নিয়ে যান, আপনি সর্বদা একটি কার্যকরী ভাষায় প্রোগ্রামিং শেষ করেন, আর ওওপি বিশ্ব থেকে কোনও কিছুর প্রয়োজন নেই? কোন ক্লাস অপরিবর্তনীয় হওয়া উচিত এবং কোনটি ওওপি বিচ্ছিন্ন না হয় তা নিশ্চিত করার জন্য কোনটি পরিবর্তনীয় থাকতে হবে তা সিদ্ধান্ত নেওয়ার জন্য কি কোনও ভাল নির্দেশিকা রয়েছে?
কেবল সুবিধার জন্য, আমি একটি উদাহরণ সরবরাহ করব। আসুন ChessBoard
দাবা-টুকরো টুকরো টুকরো টুকরো (বিমূর্ত শ্রেণীর প্রসারিত) এর এক অবিচ্ছিন্ন সংগ্রহ হিসাবে আসুনPiece
)। ওওপি দৃষ্টিকোণ থেকে, কোনও অংশ বোর্ডে তার অবস্থান থেকে বৈধ পদক্ষেপ তৈরির জন্য দায়ী। তবে চালগুলি তৈরি করতে টুকরোটির বোর্ডের একটি রেফারেন্স প্রয়োজন হয় যখন বোর্ডটির টুকরোগুলির রেফারেন্স থাকা দরকার। ঠিক আছে, আপনার ওওপি ভাষার উপর নির্ভর করে এই অপরিবর্তনীয় ক্রস-রেফারেন্সগুলি তৈরি করার জন্য কিছু কৌশল রয়েছে তবে তারা পরিচালনা করতে ব্যথা হয়, এর বোর্ডটি উল্লেখ করার জন্য কোনও টুকরো না রাখাই ভাল। তবে তারপরে টুকরাটি তার চালগুলি তৈরি করতে পারে না কারণ এটি বোর্ডের অবস্থা জানে না। তারপরে টুকরো টুকরা টাইপ এবং তার অবস্থান ধারণ করে কেবল একটি ডাটা স্ট্রাকচার হয়ে যায়। তারপরে আপনি সমস্ত ধরণের টুকরাগুলির জন্য চালগুলি তৈরি করতে একটি পলিমারফিক ফাংশন ব্যবহার করতে পারেন। এটি কার্যকরী প্রোগ্রামিংয়ে পুরোপুরি অর্জনযোগ্য তবে রানটাইম টাইপ চেক এবং অন্যান্য খারাপ ওওপি অনুশীলন ছাড়াই ওওপিতে প্রায় অসম্ভব ... তারপরে,