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