একটি জিনিস জন্য, if/else
ব্লক বড় ক্লাম্প সহজে পরীক্ষাযোগ্য হয় না । প্রতিটি নতুন "শাখা" আরেকটি কার্যকরকরণের পথ যুক্ত করে এবং এর ফলে চক্রবৃত্তীয় জটিলতা বাড়ে । আপনি যদি আপনার কোডটি পুরোপুরি পরীক্ষা করতে চান তবে আপনাকে কার্যকর করার সমস্ত রাস্তাগুলি coverেকে দিতে হবে এবং প্রতিটি শর্তের জন্য আপনাকে কমপক্ষে আরও একটি পরীক্ষা লিখতে হবে (ধরে নিবেন আপনি ছোট, কেন্দ্রীভূত পরীক্ষাগুলি লিখছেন)। অন্যদিকে, কৌশলগুলি প্রয়োগ করে এমন ক্লাসগুলি সাধারণত মাত্র 1 টি পাবলিক পদ্ধতি প্রকাশ করে, যা পরীক্ষা করা সহজ।
সুতরাং, নেস্টেড হয়ে if/else
আপনি আপনার কোডের একক অংশের জন্য অনেকগুলি পরীক্ষা করে শেষ করবেন, যখন কৌশলটির সাথে আপনার একাধিক সরল কৌশলগুলির জন্য কয়েকটি পরীক্ষা থাকবে। আধুনিকতার সাথে, এর থেকে আরও ভাল কভারেজ পাওয়া সহজ, কারণ মৃত্যুদন্ড কার্যকর করা পথগুলি মিস করা আরও শক্ত।
এক্সটেনসিবিলিটি হিসাবে , কল্পনা করুন আপনি এমন একটি ফ্রেমওয়ার্ক লিখছেন, যেখানে ব্যবহারকারীরা তাদের নিজস্ব আচরণটি ইনজেক্ট করতে সক্ষম হবেন বলে মনে করা হচ্ছে। উদাহরণস্বরূপ, আপনি একরকম ট্যাক্স গণনার কাঠামো তৈরি করতে চান এবং বিভিন্ন দেশের ট্যাক্স সিস্টেমগুলিকে সমর্থন করতে চান। এগুলি সমস্ত প্রয়োগ করার পরিবর্তে, আপনি কেবল ফ্রেমওয়ার্ক ব্যবহারকারীদের কিছু নির্দিষ্ট করের গণনা কীভাবে করা যায় তার একটি বাস্তবায়ন সরবরাহ করার সুযোগ দিতে চান।
কৌশল কৌশলটি এখানে:
- আপনি একটি ইন্টারফেস সংজ্ঞায়িত করেন, উদাহরণস্বরূপ
TaxCalculation
, এবং আপনার কাঠামো ট্যাক্স গণনা করার জন্য এই ধরণের উদাহরণ স্বীকার করে
- কাঠামোর ব্যবহারকারীর একটি শ্রেণি তৈরি করা হয়েছে যা এই ইন্টারফেসটি প্রয়োগ করে এবং এটি আপনার কাঠামোর কাছে পৌঁছে দেয়, এইভাবে গণনার কিছু অংশ সম্পাদনের উপায় সরবরাহ করে
আপনি এর সাথেও এটি করতে পারবেন না if/else
, কারণ এর জন্য কাঠামোর কোড পরিবর্তন করা দরকার, এক্ষেত্রে এটি আর কাঠামো হবে না। যেহেতু ফ্রেমওয়ার্কগুলি প্রায়শই সংকলিত আকারে বিতরণ করা হয়, এটি কেবলমাত্র একমাত্র বিকল্প হতে পারে।
তবুও, আপনি কেবল কিছু নিয়মিত কোড লিখলেও কৌশল কৌশলটি উপকারী কারণ এটি আপনার উদ্দেশ্যগুলি পরিষ্কার করে। এটি বলে যে "এই যুক্তিটি প্লাগযোগ্য এবং শর্তসাপেক্ষ", অর্থাৎ একাধিক বাস্তবায়ন হতে পারে যা ব্যবহারকারীর ক্রিয়া, কনফিগারেশন বা এমনকি প্ল্যাটফর্মের উপর নির্ভর করে হতে পারে।
স্ট্র্যাটেজি প্যাটার্ন ব্যবহার উন্নত হতে পারে পাঠযোগ্যতা , কারণ একটি বর্গ যা কিছু বিশেষ কৌশল সাধারণত প্রয়োগ একটি বর্ণনামূলক নাম থাকা উচিত যখন যেমন USAIncomeTaxCalculator
, if/else
ব্লক, "নামহীন" হয় সেরা ক্ষেত্রেই শুধু মন্তব্য, এবং মন্তব্য থাকা পারবেন না। এছাড়াও, আমার ব্যক্তিগত স্বাদ থেকে, একটানা আরও বেশি 3 টি if/else
ব্লক থাকা পঠনযোগ্য নয় এবং নেস্টেড ব্লকগুলির সাথে এটি বেশ খারাপ হয়ে যায়।
খোলা / বন্ধ নীতি , এছাড়াও খুব প্রাসঙ্গিক, কারণ হিসাবে আমি উপরের উদাহরণে বর্ণিত, স্ট্র্যাটেজি আপনি ঐ অংশ (rewriting "পরিমার্জন জন্য বন্ধ" ছাড়া আপনার কোড ( "এক্সটেনশন জন্য খোলা") কিছু অংশে একটি যুক্তিবিজ্ঞান প্রসারিত করতে পারবেন )।