প্রতি সেফ কোনও অ্যান্টি-প্যাটার্ন নয়, এমন একটি কোড প্যাটার্ন যা আপনাকে বলবে যে রিফ্যাক্টর করতে হবে।
এবং এটি বেশ সহজ, আপনাকে কেবল থাম্বের একটি নিয়ম জানতে হবে যা একই পদ্ধতিতে ট্রাই ব্লক ছাড়া আর লিখছে না। আপনি যদি সম্পর্কিত কোডগুলি একসাথে লিখতে ভাল জানেন তবে সাধারণত প্রতিটি চেষ্টা ব্লককে তার ক্যালক ব্লকগুলির সাথে অনুলিপি করে আটকানো হয় এবং এটিকে একটি নতুন পদ্ধতির অভ্যন্তরে আটকানো হয় এবং তারপরে এই পদ্ধতিতে একটি কল দিয়ে আসল ব্লকটি প্রতিস্থাপন করা হয়।
থাম্বের এই নিয়ম রবার্ট সি মার্টিনের "ক্লিন কোড" বইয়ের পরামর্শের ভিত্তিতে রচিত:
যদি 'চেষ্টা' শব্দটি কোনও ফাংশনে বিদ্যমান থাকে তবে এটি ফাংশনে প্রথম শব্দ হওয়া উচিত এবং ক্যাচ / অবশেষে ব্লক হওয়ার পরে কিছুই হওয়া উচিত নয়।
"ছদ্ম-জাভা" এর একটি দ্রুত উদাহরণ। ধরুন আমাদের কাছে এরকম কিছু রয়েছে:
try {
FileInputStream is = new FileInputStream(PATH_ONE);
String configData = InputStreamUtils.readString(is);
return configData;
} catch (FileNotFoundException e) {
try {
FileInputStream is = new FileInputStream(PATH_TWO);
String configData = InputStreamUtils.readString(is);
return configData;
} catch (FileNotFoundException e) {
try {
FileInputStream is = new FileInputStream(PATH_THREE);
String configData = InputStreamUtils.readString(is);
return configData;
} catch (FileNotFoundException e) {
return null;
}
}
}
তারপরে আমরা প্রতিটি চেষ্টা করে ক্যাচ রিফ্যাক্টর করতে পারি এবং এক্ষেত্রে প্রতিটি ট্রাই-ক্যাচ ব্লক একই জিনিসটি চেষ্টা করে তবে বিভিন্ন স্থানে (কতটা সুবিধাজনক: ডি), আমাদের কেবল চেষ্টা-ধরা ব্লকগুলির একটি অনুলিপি করতে হবে এবং এটির একটি পদ্ধতি তৈরি করতে হবে ।
public String loadConfigFile(String path) {
try {
FileInputStream is = new FileInputStream(path);
String configData = InputStreamUtils.readString(is);
return configData;
} catch (FileNotFoundException e) {
return null;
}
}
এখন আমরা এটি আগের মতো একই উদ্দেশ্যে ব্যবহার করি।
String[] paths = new String[] {PATH_ONE, PATH_TWO, PATH_THREE};
String configData;
for(String path : paths) {
configData = loadConfigFile(path);
if (configData != null) {
break;
}
}
আমি আশা করি এটি সাহায্য করবে :)