এস = একক দায়িত্বের নীতি
সুতরাং আমি একটি সুবিন্যস্ত ফোল্ডার / ফাইল কাঠামো এবং অবজেক্ট হায়ারার্কিটি দেখতে আশা করব প্রতিটি শ্রেণি / কার্যকারিতার অংশটির নামকরণ করা উচিত যে এর কার্যকারিতাটি অত্যন্ত সুস্পষ্ট এবং এতে সেই কার্য সম্পাদনের জন্য কেবল যুক্তি থাকতে হবে।
আপনি যদি হাজার লাইনের কোড সহ বিশাল ব্যবস্থাপক শ্রেণি দেখে থাকেন তবে এটি একটি চিহ্ন যে একক দায়িত্ব পালন করা হচ্ছে না।
ও = উন্মুক্ত / বদ্ধ নীতি
এটি মূলত এই ধারণাটি যে নতুন ক্লাসগুলির মাধ্যমে নতুন কার্যকারিতা যুক্ত করা উচিত যা বিদ্যমান কার্যকারিতাটির ন্যূনতম প্রভাব / সংযোজন প্রয়োজন।
আমি প্রত্যাশা করব বস্তুর উত্তরাধিকার, উপ-টাইপিং, ইন্টারফেস এবং বিমূর্ত শ্রেণীর প্রচুর ব্যবহারকে বাস্তব প্রয়োগ থেকে কার্যকারিতার একটি অংশের নকশাকে আলাদা করার জন্য, অন্যকেও প্রভাবিত না করে পাশাপাশি অন্য সংস্করণগুলি কার্যকর করার অনুমতি দেবে মূল।
এল = লিসকভ প্রতিস্থাপনের নীতি
এটি উপ-প্রকারকে তাদের পিতামাতার ধরণের হিসাবে আচরণ করার ক্ষমতা নিয়ে কাজ করে। আপনি যদি উত্তরাধিকার সূত্রে প্রাপ্ত অবজেক্ট অবলম্বনটি প্রয়োগ করে থাকেন তবে এটি সি # এর বাক্স থেকে বেরিয়ে আসে।
আমি প্রত্যাশা করব যে কোডগুলি সাধারণ অবজেক্টগুলিকে তাদের বেস টাইপ হিসাবে কল করে এবং বেস / অ্যাবস্ট্রাক্ট ক্লাসে কল করার পদ্ধতিগুলি উপস্থাপন করে সাব-টাইপগুলিতে নিজে কাজ করার পরিবর্তে calling
আমি = ইন্টারফেস বিভাজন নীতি
এটি এসআরপির অনুরূপ। মূলত, আপনি কার্যকারিতাটির ছোট ছোট উপগ্রহগুলিকে ইন্টারফেস হিসাবে সংজ্ঞায়িত করেন এবং আপনার সিস্টেমকে ডিকপলড রাখার জন্য তাদের সাথে কাজ করেন (উদাহরণস্বরূপ FileManager
, ফাইল I / O এর সাথে ডিল করার ক্ষেত্রে একক দায়বদ্ধতা থাকতে পারে তবে এটি কার্যকর করতে পারে IFileReader
এবং IFileWriter
যার মধ্যে পড়ার জন্য নির্দিষ্ট পদ্ধতির সংজ্ঞা রয়েছে) এবং ফাইল লেখার)।
ডি = নির্ভরতা বিপরীতমুখী মূলনীতি।
আবার এটি কোনও সিস্টেমকে ডিউপলড রাখার সাথে সম্পর্কিত। সম্ভবত আপনি একটি .NET নির্ভরতা ইনজেকশন গ্রন্থাগার ব্যবহারের জন্য Lookout হতে চাই, যেমন সমাধান ব্যবহৃত হচ্ছে Unity
বা Ninject
বা এই ধরনের একটি ServiceLocator সিস্টেম AutoFacServiceLocator
।