এটি সম্পর্কে কোনও দুটি উপায় নেই। রিশার্পারের পরামর্শ এবং সি # এর বেশ কয়েকটি দরকারী বৈশিষ্ট্যটি আপনার ব্যবহৃত কোডের জন্য বিচ্ছিন্ন পারমাণবিক ইউনিট পরীক্ষাগুলি প্রায়শই ব্যবহার করা হত না।
উদাহরণস্বরূপ, যদি আপনার একটি স্থিতিশীল পদ্ধতি থাকে এবং আপনার এটি বন্ধ করে দেওয়া দরকার হয় তবে আপনি প্রোফাইল ভিত্তিক বিচ্ছিন্ন কাঠামো ব্যবহার না করে আপনি পারবেন না। কল-সামঞ্জস্যপূর্ণ কাজটি লাম্বদা স্বরলিপি ব্যবহারের পদ্ধতির শীর্ষটি পরিবর্তন করা। উদাহরণ স্বরূপ:
আগে:
public static DBConnection ConnectToDB( string dbName, string connectionInfo ) {
}
পরে:
public static Func<string, string, DBConnection> ConnectToDB (dbName, connectionInfo ) {
};
দুটি কল-সামঞ্জস্যপূর্ণ। কলকারীদের পরিবর্তন করতে হবে না। ফাংশনের শরীর একই থাকে।
তারপরে আপনার ইউনিট-টেস্ট কোডগুলিতে আপনি এই কলটি তেমন স্ট্যাব করতে পারেন (ধরে নিলে এটি ডেটাবেস নামে একটি শ্রেণিতে রয়েছে):
Database.ConnectToDB = (dbName, connectionInfo) => { return null|whatever; }
কাজটি শেষ হওয়ার পরে এটির মূল মূল্য দিয়ে প্রতিস্থাপন করতে সাবধান হন। আপনি চেষ্টা করে / শেষ পর্যন্ত বা আপনার ইউনিট-টেস্ট ক্লিন আপের মাধ্যমে এটি করতে পারেন, যা প্রতিটি পরীক্ষার পরে ডাকবে, কোড লিখুন যেমন:
[TestCleanup]
public void Cleanup()
{
typeof(Database).TypeInitializer.Invoke(null, null);
}
যা আপনার শ্রেণীর স্থিতিশীল আরম্ভের পুনরায় প্রার্থনা করবে।
ল্যাম্বদা ফানসগুলি নিয়মিত স্থিতিশীল পদ্ধতির মতো সমর্থ হিসাবে সমৃদ্ধ নয়, সুতরাং এই পদ্ধতির নিম্নলিখিত অনাকাঙ্ক্ষিত পার্শ্ব-প্রতিক্রিয়া রয়েছে:
- স্থিতিশীল পদ্ধতিটি যদি কোনও এক্সটেনশন পদ্ধতি ছিল তবে আপনাকে প্রথমে এটি একটি এক্সটেনশন পদ্ধতিতে পরিবর্তন করতে হবে। রিশার্পার স্বয়ংক্রিয়ভাবে আপনার জন্য এটি করতে পারে।
- স্ট্যাটিক পদ্ধতির কোনও ডেটা ধরণের যদি কোনও এমবেডড-ইন্টারপ অ্যাসেমবিলি থাকে যেমন অফিসের জন্য, আপনাকে সেই পদ্ধতিটি মোড়তে হবে, টাইপটি মোড়ানো করতে হবে বা এটিকে 'অবজেক্ট' টাইপ করতে হবে।
- আপনি আর পুনঃভাগের পরিবর্তন-স্বাক্ষর রিফ্যাক্টরিং সরঞ্জামটি ব্যবহার করতে পারবেন না।
তবে আসুন আমরা আপনাকে স্ট্যাটিক্স পুরোপুরি এড়িয়ে চলুন এবং আপনি এটি একটি উদাহরণ পদ্ধতিতে রূপান্তর করেন। পদ্ধতিটি ভার্চুয়াল বা ইন্টারফেসের অংশ হিসাবে বাস্তবায়িত না হলে এটি এখনও বিদ্রূপযোগ্য নয়।
সুতরাং বাস্তবে, যে কেউ স্থির পদ্ধতিগুলির স্টাবের প্রতিকারের পরামর্শ দেয় তাদের হ'ল উদাহরণ পদ্ধতি তৈরি করা, তারা উদাহরণস্বরূপ পদ্ধতিগুলির বিরুদ্ধেও যা ভার্চুয়াল বা ইন্টারফেসের অংশ নয়।
তাহলে কেন সি # এর স্থির পদ্ধতি রয়েছে? কেন এটি নন-ভার্চুয়াল উদাহরণ পদ্ধতিগুলির জন্য অনুমতি দেয়?
আপনি যদি এই "বৈশিষ্ট্যগুলি" ব্যবহার করেন তবে আপনি কেবল বিচ্ছিন্ন পদ্ধতি তৈরি করতে পারবেন না।
সুতরাং আপনি কখন তাদের ব্যবহার করবেন?
এগুলি যে কোনও কোডের জন্য ব্যবহার করুন যা আপনি কখনই স্টাব আউট করতে চান না। কয়েকটি উদাহরণ: স্ট্রিং ক্লাসের ফরম্যাট () পদ্ধতি কনসোল শ্রেণির রাইটলাইন () পদ্ধতিটি ম্যাথ শ্রেণির কোশ () পদ্ধতি
এবং আরও একটি জিনিস .. বেশিরভাগ লোকেরা এটি সম্পর্কে চিন্তা করবে না, তবে যদি আপনি পরোক্ষ কলটির পারফরম্যান্স সম্পর্কে করতে পারেন তবে এটি উদাহরণ পদ্ধতিগুলি এড়ানোর অন্য কারণ। এটির ক্ষেত্রে পারফরম্যান্স হিট হওয়ার ঘটনা রয়েছে। এজন্য অ-ভার্চুয়াল পদ্ধতিগুলি প্রথম স্থানে বিদ্যমান।