হ্যাঁ, সলিড কোড ডিজাইনের খুব ভাল উপায় যা সহজেই পরীক্ষা করা যায়। একটি সংক্ষিপ্ত প্রাইমার হিসাবে:
এস - একক দায়িত্বের নীতি: কোনও অবজেক্টের ঠিক একটি জিনিস করা উচিত এবং কোডবেসে একমাত্র অবজেক্ট হওয়া উচিত যা একটি কাজ করে। উদাহরণস্বরূপ, একটি ডোমেন ক্লাস নিন, একটি চালান বলুন। চালান শ্রেণীর সিস্টেমে ব্যবহৃত হিসাবে কোনও চালানের ডেটা কাঠামো এবং ব্যবসায়ের নিয়মগুলি উপস্থাপন করা উচিত। এটি একমাত্র শ্রেণি হওয়া উচিত যা কোডবেসে চালানের উপস্থাপন করে। এটি আরও ভেঙে বলা যেতে পারে যে কোনও পদ্ধতির একটি উদ্দেশ্য থাকতে হবে এবং কোডবেসে এই প্রয়োজনটি পূরণ করে এমন একমাত্র পদ্ধতি হওয়া উচিত।
এই নীতি অনুসরণ করে, আপনি বিভিন্ন নকশায় একই কার্যকারিতা পরীক্ষা করতে লিখতে হবে যে পরীক্ষাগুলির সংখ্যা হ্রাস করে আপনি আপনার নকশার পরীক্ষার দক্ষতা বৃদ্ধি করেছেন এবং আপনি সাধারণত বিচ্ছিন্নতাতে পরীক্ষা করা সহজতর কার্যকারিতার ছোট ছোট টুকরো দিয়েও শেষ করেন।
ও - ওপেন / ক্লোজড নীতি: একটি শ্রেণি এক্সটেনশনের জন্য উন্মুক্ত হওয়া উচিত, তবে পরিবর্তনের জন্য এটি বন্ধ থাকবে । একবার যখন কোনও বস্তু উপস্থিত থাকে এবং সঠিকভাবে কাজ করে, আদর্শভাবে নতুন কার্যকারিতা যুক্ত করে এমন পরিবর্তনগুলি করার জন্য সেই অবজেক্টে ফিরে যাওয়ার দরকার নেই। পরিবর্তে, বস্তুটি প্রসারিত করা উচিত, হয় এটি ডারিং করে বা এর মধ্যে নতুন বা বিভিন্ন নির্ভরতা বাস্তবায়ন প্লাগ করে, সেই নতুন কার্যকারিতা সরবরাহ করার জন্য। এটি রিগ্রেশন এড়ায়; ইতিমধ্যে অন্য কোথাও ব্যবহৃত হওয়ায় অবজেক্টের আচরণ পরিবর্তন না করে আপনি কখন এবং কোথায় এটি প্রয়োজন তা কার্যকর করতে পারেন।
এই নীতিটি মেনে চলার মাধ্যমে আপনি সাধারণত "উপহাস" সহ্য করার কোডটির ক্ষমতা বাড়িয়ে তোলেন এবং নতুন আচরণের প্রত্যাশার জন্য আপনি আবারও পরীক্ষার পুনর্লিখন করতে এড়াতে পারেন; কোনও অবজেক্টের জন্য বিদ্যমান সমস্ত পরীক্ষাগুলি এখনও অ-বর্ধিত বাস্তবায়নে কাজ করা উচিত, যখন বর্ধিত বাস্তবায়ন ব্যবহার করে নতুন কার্যকারিতার জন্য নতুন পরীক্ষাগুলিও কাজ করা উচিত।
এল - লিসকভ সাবস্টিটিউশন নীতি: বি শ্রেণীর উপর নির্ভরশীল একটি শ্রেণির এ, কোনও পার্থক্য না জেনে কোনও এক্স: বি ব্যবহার করতে সক্ষম হবে। এর মূলত এর অর্থ হ'ল আপনি নির্ভরতা হিসাবে যে কোনও কিছু ব্যবহার করুন তার উপর নির্ভরশীল শ্রেণীর মতোই আচরণ করা উচিত। একটি সংক্ষিপ্ত উদাহরণ হিসাবে, বলুন আপনার কাছে একটি আইউইটার ইন্টারফেস রয়েছে যা রাইটিং (স্ট্রিং) প্রকাশ করে, যা কনসোল রাইটার দ্বারা প্রয়োগ করা হয়। পরিবর্তে এখন আপনাকে একটি ফাইল লিখতে হবে, যাতে আপনি ফাইল রাইটার তৈরি করেন। এটি করতে গিয়ে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে কনসোল রাইটারের মতো ফাইল রাইটারও একইভাবে ব্যবহার করা যেতে পারে (যার অর্থ নির্ভর করে কেবল নির্ভর করে এটির সাথে যোগাযোগ করতে পারে কেবল রাইটিং (স্ট্রিং)) কল করে, এবং তাই অতিরিক্ত তথ্য যা ফাইল রাইটারকে এটি করার প্রয়োজন হতে পারে কাজ (যেমন লেখার জন্য পথ এবং ফাইলের মতো) নির্ভরতার বাইরে অন্য কোথাও থেকে সরবরাহ করতে হবে।
এটি টেস্টেবল কোড লেখার জন্য বিশাল, কারণ একটি নকশা যা এলএসপিকে মেনে চলে এমন কোনও "বিদ্রূপ" অবজেক্টটি প্রত্যাশিত আচরণ পরিবর্তন না করে যে কোনও সময়ে আসল জিনিসের পরিবর্তে আস্থার সাথে বিচ্ছিন্নতার সাথে পরীক্ষার অনুমতি দিতে পারে সিস্টেমটি তখন প্লাগ ইন করা আসল বস্তুগুলির সাথে কাজ করবে।
I - ইন্টারফেস বিভাজন নীতি: একটি ইন্টারফেসের ইন্টারফেস দ্বারা সংজ্ঞায়িত ভূমিকার কার্যকারিতা সরবরাহ করার জন্য যতটা সম্ভব পদ্ধতি থাকতে হবে । সহজ কথায় বলতে গেলে আরও বেশি ছোট ইন্টারফেস কম বড় ইন্টারফেসের চেয়ে ভাল। এটি কারণ একটি বৃহত ইন্টারফেসের পরিবর্তনের আরও বেশি কারণ রয়েছে এবং কোডবেসে অন্য কোথাও আরও পরিবর্তন ঘটে যা প্রয়োজনীয় নয় be
আইএসপির আনুগত্য পরীক্ষার অধীনে থাকা সিস্টেমগুলির জটিলতা এবং S এসইউগুলির নির্ভরতা হ্রাস করে পরীক্ষাযোগ্যতা উন্নত করে। আপনি যে বস্তুর পরীক্ষা করছেন সেটি যদি ইন্টারফেস আইডোথ্রিথিংসের উপর নির্ভর করে যা ডওন (), দোটো () এবং ডুথ্রি () প্রকাশ করে তবে আপনাকে অবশ্যই এমন একটি বিষয়কে মক করতে হবে যা তিনটি পদ্ধতিই প্রয়োগ করে এমনকি যদি বস্তুটি কেবলমাত্র ডোটো পদ্ধতি ব্যবহার করে। তবে, যদি অবজেক্টটি কেবল আইডোটো-র উপর নির্ভর করে (যা কেবলমাত্র ডটো দুটি প্রকাশ করে), আপনি আরও সহজেই যে কোনও একটি পদ্ধতিতে থাকা কোনও বস্তুকে উপহাস করতে পারেন।
ডি - নির্ভরতা বিপর্যয় নীতি: কনক্রেশন এবং বিমূর্ততা কখনই অন্যান্য সিদ্ধান্তের উপর নির্ভর করে না, তবে বিমূর্তির উপর নির্ভর করে । এই নীতিটি looseিলেlingালা সংযোগের মূলকাজটি সরাসরি প্রয়োগ করে। কোনও বস্তুটি কখনই জানতে হবে না যে কোনও বস্তু কী; পরিবর্তে কোনও জিনিস কী করে তার যত্ন নেওয়া উচিত। সুতরাং, কোনও বস্তু বা পদ্ধতির বৈশিষ্ট্য এবং পরামিতিগুলি সংজ্ঞায়িত করার সময় কংক্রিট বাস্তবায়ন ব্যবহারের চেয়ে ইন্টারফেস এবং / বা অ্যাবস্ট্রাক্ট বেস ক্লাসগুলির ব্যবহারকে সর্বদা পছন্দ করা উচিত। এটি আপনাকে ব্যবহার পরিবর্তন না করেই অন্যের জন্য একটি প্রয়োগকরণের অদলবদল করতে দেয় (আপনি যদি এলএসপি অনুসরণ করেন, যা ডিআইপির সাথে মিলিত হয়)।
আবার এটি পরীক্ষার জন্য বিশাল, কারণ এটি আপনাকে পুনরায় পরীক্ষার জন্য আপনার "অবজেক্ট" প্রয়োগের পরিবর্তে নির্ভরতার একটি মক বাস্তবায়ন করার জন্য অনুমতি দেয়, যখন এখনও অবজেক্টটিকে সঠিক আকারে পরীক্ষা করার সময় এটি হবে উৎপাদন. এটি "বিচ্ছিন্নভাবে" ইউনিট পরীক্ষার চাবিকাঠি।