গুয়াভা (Guava) লাইব্রেরি Validators এবং Preconditions ক্লাসগুলোর মাধ্যমে ইনপুট ভ্যালিডেশন এবং ভ্যালিডেশন ফেইল হওয়া অবস্থায় উপযুক্ত ত্রুটি জানানোর প্রক্রিয়াটিকে অনেক সহজ এবং কার্যকরী করে তোলে। যেখানে Preconditions ইনপুট চেক করার জন্য সহজ এবং দ্রুত একটি পদ্ধতি সরবরাহ করে, সেখানে Validators আরও বিস্তারিত ও কাস্টম চেকিংয়ের সুযোগ দেয়।
Preconditions এবং Validators এর মধ্যে সমন্বয় ব্যবহারের মাধ্যমে আপনি কোডের স্থিতিশীলতা, নিরাপত্তা, এবং পাঠযোগ্যতা বৃদ্ধি করতে পারেন।
Preconditions এর ধারণা
Preconditions ক্লাসটি গুয়াভা লাইব্রেরির একটি গুরুত্বপূর্ণ অংশ, যা ইনপুট ভ্যালিডেশন এবং প্রোগ্রাম চালানোর শর্ত যাচাই করার জন্য ব্যবহৃত হয়। এটি আপনার কোডে শর্তগুলির যথাযথতা নিশ্চিত করে এবং শর্ত পূর্ণ না হলে একটি ত্রুটি ছুড়ে দেয়। প্রধানত এটি checkArgument(), checkNotNull(), checkState() ইত্যাদি মেথড দ্বারা কাজ করে।
Validators এর ধারণা
Validators সাধারণত জাভা প্রোগ্রামগুলিতে ইনপুট যাচাই বা মান যাচাই করার জন্য ব্যবহৃত হয়। এটি বিশেষ করে জটিল বা কাস্টম ভ্যালিডেশন চেক করার জন্য উপযোগী। এই প্রক্রিয়া ইনপুট বা ডেটার মান যাচাই করে এবং যে কোনও ভুল বা অযাচিত মান চিহ্নিত করতে সাহায্য করে।
Validators এবং Preconditions এর সমন্বয়
আপনি যখন Preconditions এবং Validators একসঙ্গে ব্যবহার করবেন, তখন আপনি প্রোগ্রামের মান যাচাই করতে দ্রুত এবং সহজ পদ্ধতি পাবেন। Preconditions ইনপুটের প্রাথমিক ভ্যালিডেশন নিশ্চিত করতে পারে এবং তারপর Validators আরো বিস্তারিত বা কাস্টম ভ্যালিডেশন চেক করতে পারে।
উদাহরণ: Preconditions এবং Validators একসঙ্গে ব্যবহার
ধরা যাক, আপনি একটি ইউজার রেজিস্ট্রেশন ফর্ম তৈরি করছেন যেখানে ইউজার নাম, বয়স এবং ইমেইল প্রদান করবে। আপনি Preconditions.checkNotNull() দিয়ে প্রাথমিক চেক করতে পারেন এবং তারপর Validators ব্যবহার করে আরও গভীর ভ্যালিডেশন করবেন।
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.common.collect.Iterables;
public class GuavaValidationExample {
public static void main(String[] args) {
String name = "John Doe";
Integer age = 25;
String email = "johndoe@example.com";
// Preconditions দ্বারা প্রাথমিক ভ্যালিডেশন
Preconditions.checkNotNull(name, "Name cannot be null");
Preconditions.checkArgument(age >= 18, "Age must be 18 or older");
// কাস্টম ভ্যালিডেশন: নামের জন্য খালি স্ট্রিং অনুমোদিত নয়
validateName(name);
// কাস্টম ভ্যালিডেশন: ইমেইল ঠিক আছে কিনা
validateEmail(email);
System.out.println("User registration successful!");
}
// কাস্টম ভ্যালিডেশন: নাম চেক করা
public static void validateName(String name) {
Preconditions.checkArgument(!Strings.isNullOrEmpty(name), "Name cannot be empty or null");
}
// কাস্টম ভ্যালিডেশন: ইমেইল ঠিক আছে কিনা
public static void validateEmail(String email) {
Preconditions.checkArgument(email.contains("@"), "Invalid email address");
}
}
ব্যাখ্যা
- Preconditions.checkNotNull(name, "Name cannot be null"):
- এটি নিশ্চিত করে যে name ফিল্ডটি নাল নয়। যদি এটি নাল হয়, তাহলে একটি
NullPointerExceptionছুড়ে দেবে।
- এটি নিশ্চিত করে যে name ফিল্ডটি নাল নয়। যদি এটি নাল হয়, তাহলে একটি
- Preconditions.checkArgument(age >= 18, "Age must be 18 or older"):
- এটি নিশ্চিত করে যে age 18 বা তার চেয়ে বেশি। যদি এটি কম হয়, তাহলে একটি
IllegalArgumentExceptionছুড়ে দেবে।
- এটি নিশ্চিত করে যে age 18 বা তার চেয়ে বেশি। যদি এটি কম হয়, তাহলে একটি
- validateName(name):
- এই কাস্টম ফাংশনটি চেক করে যে name ফিল্ডটি খালি নয়। যদি খালি বা নাল হয়, তবে একটি
IllegalArgumentExceptionছুড়ে দেবে।
- এই কাস্টম ফাংশনটি চেক করে যে name ফিল্ডটি খালি নয়। যদি খালি বা নাল হয়, তবে একটি
- validateEmail(email):
- এটি চেক করে যে email ফিল্ডে একটি বৈধ ইমেইল ঠিকানা রয়েছে কিনা, অর্থাৎ ইমেইলে "@” সিম্বল থাকতে হবে। যদি এটি না থাকে, তবে একটি
IllegalArgumentExceptionছুড়ে দেবে।
- এটি চেক করে যে email ফিল্ডে একটি বৈধ ইমেইল ঠিকানা রয়েছে কিনা, অর্থাৎ ইমেইলে "@” সিম্বল থাকতে হবে। যদি এটি না থাকে, তবে একটি
কাস্টম ভ্যালিডেশন মেথড
যতটা সম্ভব Preconditions ব্যবহার করে সহজ ভ্যালিডেশন করা ভাল, কিন্তু যখন আপনার প্রয়োজন আরও জটিল বা কাস্টম ভ্যালিডেশন, তখন আপনি কাস্টম মেথড ব্যবহার করতে পারেন।
উদাহরণস্বরূপ:
public class CustomValidators {
// একটি নম্বরের সঠিকতা যাচাই
public static boolean isValidPhoneNumber(String phoneNumber) {
return phoneNumber.matches("^[0-9]{10}$"); // নিশ্চিত করুন যে এটি 10 ডিজিটের নম্বর
}
}
এখানে isValidPhoneNumber মেথডটি চেক করবে যে ফোন নম্বরটি সঠিক ফরম্যাটে আছে কিনা। আপনি এমন কাস্টম চেকিং করতে চাইলে Preconditions এর সাথে এটি সংযুক্ত করতে পারেন।
গুয়াভা লাইব্রেরির Preconditions এবং Validators একসঙ্গে ব্যবহারের মাধ্যমে আপনি ইনপুট যাচাই এবং ভ্যালিডেশন প্রক্রিয়াগুলোকে আরও কার্যকর এবং স্থিতিশীল করতে পারবেন। Preconditions ফাস্ট ইনপুট চেক করতে সাহায্য করে এবং Validators কাস্টম ভ্যালিডেশন এবং আরও বিস্তারিত চেক করার জন্য ব্যবহৃত হয়। এই দুইটি একসঙ্গে ব্যবহার করলে আপনার প্রোগ্রামের নিরাপত্তা এবং স্থিতিশীলতা নিশ্চিত হবে।
Read more