রবার্ট সি মার্টিনের মতে এসআরপি বলেছে যে:
শ্রেণীর পরিবর্তনের জন্য একাধিক কারণ থাকতে হবে না।
তবে তাঁর ক্লিন কোড বইয়ে , অধ্যায় 3: ফাংশনগুলি, তিনি নিম্নলিখিত কোডের ব্লকটি দেখান:
public Money calculatePay(Employee e) throws InvalidEmployeeType {
switch (e.type) {
case COMMISSIONED:
return calculateCommissionedPay(e);
case HOURLY:
return calculateHourlyPay(e);
case SALARIED:
return calculateSalariedPay(e);
default:
throw new InvalidEmployeeType(e.type);
}
}
এবং তারপরে বলা হয়েছে:
এই ফাংশনটিতে বেশ কয়েকটি সমস্যা রয়েছে। প্রথমত, এটি বিশাল, এবং যখন নতুন কর্মচারীর প্রকার যুক্ত করা হয়, তখন এটি বাড়বে। দ্বিতীয়ত, এটি খুব স্পষ্টভাবে একাধিক জিনিস করে। তৃতীয়ত, এটি একক দায়িত্বের নীতি (এসআরপি) লঙ্ঘন করে কারণ এর পরিবর্তনের একাধিক কারণ রয়েছে । [জোর আমার]
প্রথমত, আমি ভেবেছিলাম এসআরপি ক্লাসগুলির জন্য সংজ্ঞায়িত করা হয়েছিল তবে এটি কার্যকরী ক্ষেত্রেও প্রযোজ্য। দ্বিতীয়ত, কীভাবে এই ফাংশনটির পরিবর্তনের একাধিক কারণ রয়েছে ? আমি কেবল এটি কর্মচারীর পরিবর্তনের কারণে দেখতে পাচ্ছি।