মনে করুন আমাদের কাছে এমন একটি পদ্ধতি রয়েছে foo(String bar)যা কেবলমাত্র স্ট্রিংগুলিতে কাজ করে যা নির্দিষ্ট মানদণ্ডগুলি পূরণ করে; উদাহরণস্বরূপ, এটি ছোট হাতের অক্ষর হতে হবে, খালি থাকতে হবে না বা কেবল শ্বেতস্থান থাকতে হবে এবং অবশ্যই প্যাটার্নটির সাথে মেলে [a-z0-9-_./@]+। পদ্ধতির জন্য ডকুমেন্টেশন এই মানদণ্ডগুলি উল্লেখ করে।
পদ্ধতিটি কি এই মানদণ্ড থেকে কোনও এবং সমস্ত বিচ্যুতি প্রত্যাখ্যান করে, বা পদ্ধতিটি কিছু মানদণ্ড সম্পর্কে আরও ক্ষমা করা উচিত? উদাহরণস্বরূপ, যদি প্রাথমিক পদ্ধতিটি হয়
public void foo(String bar) {
if (bar == null) {
throw new IllegalArgumentException("bar must not be null");
}
if (!bar.matches(BAR_PATTERN_STRING)) {
throw new IllegalArgumentException("bar must match pattern: " + BAR_PATTERN_STRING);
}
this.bar = bar;
}
এবং দ্বিতীয় ক্ষমা পদ্ধতি হল
public void foo(String bar) {
if (bar == null) {
throw new IllegalArgumentException("bar must not be null");
}
if (!bar.matches(BAR_PATTERN_STRING)) {
bar = bar.toLowerCase().trim().replaceAll(" ", "_");
if (!bar.matches(BAR_PATTERN_STRING) {
throw new IllegalArgumentException("bar must match pattern: " + BAR_PATTERN_STRING);
}
}
this.bar = bar;
}
ডকুমেন্টেশনটি কি এমন অবস্থায় পরিবর্তন করা উচিত যে এটি সম্ভব হলে পরিবর্তিত হবে এবং রূপান্তরিত মানটিতে সেট করা হবে, বা পদ্ধতিটি যতটা সম্ভব সহজ রাখা উচিত এবং কোনও এবং সমস্ত বিচ্যুতি বাতিল করা উচিত? এই ক্ষেত্রে, barএকটি অ্যাপ্লিকেশন ব্যবহারকারী দ্বারা সেট করা যেতে পারে।
এর প্রাথমিক ব্যবহারের ক্ষেত্রে ব্যবহারকারীরা কোনও নির্দিষ্ট স্ট্রিং শনাক্তকারী দ্বারা একটি সংগ্রহস্থল থেকে অবজেক্টগুলি অ্যাক্সেস করতে পারে। সংগ্রহস্থলের প্রতিটি বস্তুর এটি সনাক্ত করার জন্য একটি অনন্য স্ট্রিং থাকা উচিত। এই সংগ্রহস্থলগুলি বিভিন্ন উপায়ে (sql সার্ভার, জসন, এক্সএমএল, বাইনারি ইত্যাদি) সংরক্ষণ করতে পারে এবং তাই আমি নামকরণের সর্বাধিক নাম উল্লেখ করার সাথে সর্বনিম্ন সাধারণ ডিনোমিনেটর সনাক্ত করার চেষ্টা করেছি identify
fooফাংশন থাকা উচিত যা এটি যুক্তিগুলি গ্রহণ করে তাতে কঠোরতা থাকতে হবে এবং একটি দ্বিতীয় সহায়ক ফাংশন থাকতে হবে যা একটি যুক্তিকে "পরিষ্কার" করার চেষ্টা করতে পারে foo। এই পদ্ধতিতে, প্রতিটি পদ্ধতির নিজস্ব কাজ কম হয় এবং এগুলি আরও পরিষ্কারভাবে পরিচালনা এবং সংহত করতে পারে। যদি সেই রুটে নেমে যাওয়া হয় তবে এটি সম্ভবত ব্যতিক্রম-ভারী নকশা থেকে সরে যেতে সহায়ক হবে; আপনি Optionalপরিবর্তে এর মতো কিছু ব্যবহার করতে পারেন , এবং তারপরে প্রয়োজনীয় ক্রিয়াকলাপগুলি ব্যর্থতা ফেলবে foo।