Guava Preconditions গাইড ও নোট

Java Technologies - গুয়াভা (Guava)
270

গুয়াভা (Guava) লাইব্রেরিতে Preconditions ক্লাস একটি অত্যন্ত কার্যকরী টুল, যা কোডের বিভিন্ন অংশে ভ্যালিডেশন চেক করার জন্য ব্যবহৃত হয়। এই ক্লাসটি বিশেষ করে সেই পরিস্থিতিতে উপকারী যেখানে আপনাকে নিশ্চিত করতে হয় যে কোনো মান বা অবস্থা নির্দিষ্ট শর্ত পূরণ করছে। এটি Java এ null চেকিং বা ইনপুট ভ্যালিডেশন করার জন্য একটি সহজ এবং কার্যকরী উপায় প্রদান করে।


Preconditions ক্লাসের ব্যবহার

Preconditions ক্লাসটি বিভিন্ন ধরণের চেকিং মেথড প্রদান করে, যেমন checkArgument(), checkState(), checkNotNull(), ইত্যাদি। এই মেথডগুলো ব্যবহারের মাধ্যমে আপনি সহজে ইনপুট ভ্যালিডেশন এবং শর্তাবলী নিশ্চিত করতে পারেন।

১. checkArgument()

এই মেথডটি একটি যুক্তির ভ্যালিডিটি চেক করে এবং যদি শর্তটি মিথ্যা হয় তবে IllegalArgumentException থ্রো করে।

উদাহরণ:

import com.google.common.base.Preconditions;

public class GuavaPreconditionsExample {
    public static void main(String[] args) {
        int age = -5;
        
        // Preconditions.checkArgument() ব্যবহার করে বয়সের মান চেক করা
        Preconditions.checkArgument(age > 0, "Age must be positive: %s", age);
    }
}

এই কোডে, যদি age 0 বা তার নিচে হয়, তাহলে IllegalArgumentException থ্রো হবে এবং "Age must be positive" এর সাথে আর্গুমেন্ট -5 দেখাবে।

২. checkState()

এই মেথডটি কোনো অবস্থা (state) চেক করার জন্য ব্যবহৃত হয়, যেমন একটি অবজেক্টের স্টেট যা কোনো নির্দিষ্ট শর্তের উপর নির্ভর করে।

উদাহরণ:

import com.google.common.base.Preconditions;

public class GuavaStateExample {
    public static void main(String[] args) {
        boolean isAuthenticated = false;
        
        // Preconditions.checkState() ব্যবহার করে অবস্থা চেক করা
        Preconditions.checkState(isAuthenticated, "User must be authenticated");
    }
}

এখানে, যদি isAuthenticated ফ্ল্যাগ false থাকে, তাহলে IllegalStateException থ্রো হবে এবং "User must be authenticated" এর বার্তা দেখাবে।

৩. checkNotNull()

এই মেথডটি কোনো অবজেক্ট বা মান null না হওয়ার জন্য ব্যবহৃত হয়। এটি NullPointerException থ্রো করে যদি ইনপুট null হয়।

উদাহরণ:

import com.google.common.base.Preconditions;

public class GuavaNullCheckExample {
    public static void main(String[] args) {
        String name = null;
        
        // Preconditions.checkNotNull() ব্যবহার করে null চেক করা
        name = Preconditions.checkNotNull(name, "Name cannot be null");
    }
}

এই ক্ষেত্রে, যদি name null হয়, তাহলে NullPointerException থ্রো হবে এবং "Name cannot be null" এর বার্তা দেখাবে।


Preconditions মেথডগুলোর অন্যান্য ব্যবহার

৪. checkElementIndex()

এই মেথডটি একটি ইনডেক্সের ভ্যালিডিটি চেক করতে ব্যবহৃত হয়।

উদাহরণ:

import com.google.common.base.Preconditions;

public class GuavaIndexCheckExample {
    public static void main(String[] args) {
        int index = 5;
        int listSize = 4;
        
        // Preconditions.checkElementIndex() ব্যবহার করে ইনডেক্স চেক করা
        Preconditions.checkElementIndex(index, listSize, "Invalid index: %s", index);
    }
}

যদি index এর মান listSize এর চেয়ে বেশি হয়, তাহলে IndexOutOfBoundsException থ্রো হবে।

৫. checkPositionIndex()

এই মেথডটি একটি পজিশন ইনডেক্স চেক করে।

উদাহরণ:

import com.google.common.base.Preconditions;

public class GuavaPositionCheckExample {
    public static void main(String[] args) {
        int position = 3;
        int listSize = 3;
        
        // Preconditions.checkPositionIndex() ব্যবহার করে পজিশন ইনডেক্স চেক করা
        Preconditions.checkPositionIndex(position, listSize, "Invalid position: %s", position);
    }
}

এটি পজিশন ইনডেক্সটি তালিকার সীমার মধ্যে আছে কিনা তা নিশ্চিত করবে। যদি না থাকে, তবে IndexOutOfBoundsException থ্রো হবে।


Preconditions ক্লাসের সুবিধা

  • সহজ ভ্যালিডেশন: Preconditions এর মাধ্যমে ইনপুট ভ্যালিডেশন বা অবস্থার চেকিং সহজ এবং কোডের মধ্যে আরও পরিষ্কারভাবে চেক করা সম্ভব।
  • নির্ভরযোগ্য ত্রুটি হ্যান্ডলিং: শর্ত পূর্ণ না হলে, এটি যথাযথভাবে কাস্টম ত্রুটি বার্তা সহ ব্যতিক্রম (exception) তৈরি করে, যা ডিবাগিং এবং ত্রুটি হ্যান্ডলিং সহজ করে।
  • কোডের পাঠযোগ্যতা বৃদ্ধি: কোডের মধ্যে নির্দিষ্ট শর্তগুলি যাচাই করা সহজ হয়, যা প্রোগ্রামের পাঠযোগ্যতা এবং রক্ষণাবেক্ষণ উন্নত করে।

সারাংশ

গুয়াভা (Guava) লাইব্রেরির Preconditions ক্লাসটি Java প্রোগ্রামে ইনপুট এবং স্টেট ভ্যালিডেশন সহজ করে। checkArgument(), checkState(), checkNotNull() ইত্যাদি মেথড ব্যবহার করে আপনি আপনার কোডে ভ্যালিডেশন যোগ করতে পারেন, যা কোডের নিরাপত্তা এবং স্থিতিশীলতা বৃদ্ধি করে। এই ক্লাসটি ডেভেলপারদের জন্য একটি অত্যন্ত গুরুত্বপূর্ণ টুল যা কোডের মান নিশ্চিত করতে সহায়ক।


Content added By

Preconditions কি এবং কেন প্রয়োজন?

297

Guava এর Preconditions ক্লাসটি একটি গুরুত্বপূর্ণ ইউটিলিটি যা আপনাকে নির্দিষ্ট শর্তগুলি (conditions) পরীক্ষা করতে সাহায্য করে, বিশেষ করে যখন আপনি আপনার কোডে ইনপুট ভ্যালু বা অবস্থা যাচাই করতে চান। এটি null চেক, রেঞ্জ চেক, বা শর্ত পূর্ণ না হলে ব্যতিক্রম (exception) ছোড়ার জন্য ব্যবহার করা হয়। Guava এর Preconditions ক্লাসটি আপনার কোডকে আরও ক্লিন, পাঠযোগ্য এবং বাগ-ফ্রি রাখে।


Preconditions ক্লাসের বৈশিষ্ট্য

Preconditions ক্লাসের মূল উদ্দেশ্য হলো ইনপুট ভ্যালু বা শর্ত পরীক্ষা করা এবং সেগুলোর জন্য উপযুক্ত ব্যতিক্রম (exception) ছোড়া। এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য হলো:

  1. checkArgument():
    • এটি একটি শর্ত পরীক্ষা করে এবং শর্তটি সঠিক না হলে একটি IllegalArgumentException ছোড়ে।
    • এটি ইনপুট ভ্যালু যাচাই করতে ব্যবহৃত হয়।
  2. checkNotNull():
    • এটি কোনো অবজেক্ট null না হওয়া নিশ্চিত করে। যদি অবজেক্টটি null হয়, তবে এটি একটি NullPointerException ছোড়ে।
    • সাধারণত null চেক করার জন্য ব্যবহৃত হয়।
  3. checkState():
    • এটি কোনো অবস্থা (state) যাচাই করে এবং যদি অবস্থা সঠিক না হয়, তবে একটি IllegalStateException ছোড়ে।
    • এটি সাধারণত কোনো প্রোগ্রামের স্থিতি বা অবস্থা যাচাই করতে ব্যবহৃত হয়।
  4. checkElementIndex() এবং checkPositionIndex():
    • এগুলি সূচক (index) চেক করতে ব্যবহৃত হয়। এগুলির মাধ্যমে কোনো অ্যারে বা লিস্টের সঠিক ইনডেক্স যাচাই করা যায়।
  5. checkNotNull():
    • এটি কোনো ভ্যালু null না হওয়ার নিশ্চয়তা দেয়। যদি null হয়, তবে এটি একটি NullPointerException ছোড়ে।

কেন Preconditions প্রয়োজন?

  1. কোডের সঠিকতা নিশ্চিত করা:
    • Preconditions ব্যবহারের মাধ্যমে আপনি কোডের শর্ত যাচাই করতে পারেন। এটি নিশ্চিত করে যে ফাংশনে প্রবেশের আগে আপনার ইনপুট ভ্যালু বা অবস্থা সঠিক এবং প্রত্যাশিত।
  2. বাগ কমানো:
    • কোডে লজিক্যাল বাগ কমানোর জন্য Preconditions অত্যন্ত কার্যকরী। এটি ইনপুট বা অবস্থা চেক করার মাধ্যমে রানটাইম ত্রুটি কমাতে সাহায্য করে।
  3. অস্বাভাবিক অবস্থা এড়ানো:
    • যখন কোডে কোনো অবস্থা অস্বাভাবিক হয়, তখন Preconditions এর মাধ্যমে ত্রুটি সনাক্ত করা যায় এবং ব্যতিক্রম ছোড়া হয়, যার মাধ্যমে অবস্থা মোকাবেলা করা সহজ হয়।
  4. পাঠযোগ্যতা উন্নয়ন:
    • Preconditions এর মাধ্যমে কোড পরিষ্কার, সরল এবং পাঠযোগ্য হয়, কারণ এটি ইনপুট যাচাইয়ের জন্য ম্যানুয়ালি কোনো কোড লেখার প্রয়োজন কমায়। কোডের অন্য ডেভেলপাররা দ্রুত বুঝতে পারেন যে, কী ধরনের শর্ত যাচাই করা হচ্ছে।
  5. ডিবাগিং সহজ করা:
    • Preconditions ব্যতিক্রমগুলি আপনার কোডে ত্রুটি সনাক্ত করতে সহজ করে তোলে। যখন কোনো শর্ত পূর্ণ হয় না, তখন ব্যতিক্রমগুলি ডিবাগিংকে সহজ করে দেয়।

Guava Preconditions এর উদাহরণ

1. checkArgument() ব্যবহার করা

int age = -5;
Preconditions.checkArgument(age > 0, "Age must be positive: %s", age);  // IllegalArgumentException

এখানে, যদি age ধনাত্মক না হয়, তবে এটি একটি IllegalArgumentException ছোড়ে এবং ত্রুটির বার্তা প্রদর্শন করে।

2. checkNotNull() ব্যবহার করা

String name = null;
Preconditions.checkNotNull(name, "Name cannot be null");  // NullPointerException

এখানে, যদি name null হয়, তবে একটি NullPointerException ছোড়া হবে।

3. checkState() ব্যবহার করা

boolean isInitialized = false;
Preconditions.checkState(isInitialized, "Object must be initialized before use");  // IllegalStateException

এখানে, যদি অবজেক্টটি ইনিশিয়ালাইজড না হয়, তবে একটি IllegalStateException ছোড়া হবে।


Preconditions ক্লাসটি কোডের নির্ভরযোগ্যতা এবং নিরাপত্তা নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি কোডে অস্বাভাবিক অবস্থা দ্রুত সনাক্ত এবং সমাধান করতে সাহায্য করে।

Content added By

Preconditions.checkNotNull(), checkArgument() এর ব্যবহার

320

গুয়াভা (Guava) লাইব্রেরির Preconditions ক্লাসটি ইনপুট ভ্যালিডেশন করার জন্য একটি শক্তিশালী টুল সরবরাহ করে। এটি আপনার কোডে নির্দিষ্ট শর্ত পূরণ হচ্ছে কিনা তা পরীক্ষা করে এবং শর্ত পূরণ না হলে একটি IllegalArgumentException বা NullPointerException ছুড়ে দেয়। এই প্রক্রিয়াটি কোডে ভুল বা অনাকাঙ্ক্ষিত অবস্থার সম্ভাবনা কমিয়ে দেয় এবং অ্যাপ্লিকেশনের স্থিতিশীলতা নিশ্চিত করে।

Preconditions.checkNotNull()

Preconditions.checkNotNull() মেথডটি একটি অবজেক্টের জন্য নাল (null) চেক করতে ব্যবহৃত হয়। যদি আপনি নিশ্চিত হতে চান যে একটি অবজেক্ট নাল নয়, তবে এটি ব্যবহার করা যেতে পারে। যদি অবজেক্টটি নাল হয়, এটি একটি NullPointerException ছুঁড়ে দেয়।

ব্যবহার

import com.google.common.base.Preconditions;

public class GuavaExample {
    public static void main(String[] args) {
        String name = null;

        // checkNotNull() ব্যবহার
        try {
            String result = Preconditions.checkNotNull(name, "Name cannot be null");
        } catch (NullPointerException e) {
            System.out.println(e.getMessage());
        }
    }
}

এখানে, যদি name নাল হয়, তবে checkNotNull() একটি NullPointerException ছুড়ে দেবে এবং সেই exception এর সাথে একটি কাস্টম মেসেজ প্রদান করবে, যেমন "Name cannot be null"

কেন ব্যবহার করবেন?

  • নাল ভ্যালু প্রতিরোধ: কোডে যেখানে নাল ভ্যালু অনুমোদিত নয়, সেখানে checkNotNull() ব্যবহার করে আপনি নাল ভ্যালু হ্যান্ডলিং নিশ্চিত করতে পারেন।
  • বাগ কমানো: কোডের অপ্রত্যাশিত নাল ভ্যালু অ্যাক্সেস কমাতে সাহায্য করে, যা NullPointerException ঘটাতে পারে।
  • কাস্টম মেসেজ: আপনি একটি কাস্টম মেসেজ প্রদান করতে পারেন, যা ডিবাগিংয়ের সময় সহায়ক হতে পারে।

Preconditions.checkArgument()

Preconditions.checkArgument() মেথডটি ইনপুট ভ্যালিডেশন করার জন্য ব্যবহৃত হয়। এটি নিশ্চিত করে যে একটি নির্দিষ্ট শর্ত সত্য কিনা, এবং শর্তটি মিথ্যা হলে IllegalArgumentException ছুড়ে দেয়। এটি সাধারণত ব্যবহৃত হয় যখন কোনো মেথডে বা কন্সট্রাকটরে কিছু নির্দিষ্ট প্যারামিটার বা কন্ডিশন বাধ্যতামূলক থাকে।

ব্যবহার

import com.google.common.base.Preconditions;

public class GuavaExample {
    public static void main(String[] args) {
        int age = -5;

        // checkArgument() ব্যবহার
        try {
            Preconditions.checkArgument(age > 0, "Age must be greater than 0");
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }
    }
}

এখানে, যদি age 0 এর নিচে থাকে, তবে checkArgument() একটি IllegalArgumentException ছুড়ে দেবে এবং "Age must be greater than 0" মেসেজটি দেখাবে।

কেন ব্যবহার করবেন?

  • ইনপুট ভ্যালিডেশন: যখন ইনপুটের শর্ত পূর্ণ হওয়া আবশ্যক, তখন checkArgument() ব্যবহার করা হয়। এটি নিশ্চিত করে যে আপনি যে শর্তটি প্রয়োগ করছেন তা সত্য।
  • ব্যবহারকারী ইন্টারফেসের নিরাপত্তা: কোনো মান বা অবস্থার ভিত্তিতে কাস্টম ব্যতিক্রম তৈরি করতে সহায়ক।
  • কাস্টম মেসেজ: এটি কাস্টম মেসেজের মাধ্যমে ইনপুট ভ্যালিডেশন সম্পর্কে আরও স্পষ্ট ধারণা দেয়।

checkNotNull() এবং checkArgument() এর মধ্যে পার্থক্য

  • checkNotNull(): নাল ভ্যালু চেক করার জন্য ব্যবহৃত হয়।
  • checkArgument(): একটি নির্দিষ্ট শর্ত বা যুক্তির সঠিকতা পরীক্ষা করার জন্য ব্যবহৃত হয়।

ব্যবহার উদাহরণ

ধরা যাক, আপনি একটি ইউজার রেজিস্ট্রেশন ফর্ম তৈরি করছেন যেখানে ইউজারকে নাম, বয়স এবং ইমেইল প্রদান করতে হবে। এখানে Preconditions.checkNotNull() এবং checkArgument() ব্যবহার করা যেতে পারে।

import com.google.common.base.Preconditions;

public class UserRegistration {
    public static void main(String[] args) {
        String name = "John";
        int age = 25;
        String email = "john.doe@example.com";
        
        // checkNotNull() ব্যবহার
        Preconditions.checkNotNull(name, "Name cannot be null");
        Preconditions.checkNotNull(email, "Email cannot be null");
        
        // checkArgument() ব্যবহার
        Preconditions.checkArgument(age >= 18, "Age must be 18 or older");
        
        System.out.println("User registered successfully!");
    }
}

এখানে, checkNotNull() ব্যবহার করে নাম এবং ইমেইল চেক করা হয়েছে, এবং checkArgument() ব্যবহার করে বয়সের শর্ত পরীক্ষা করা হয়েছে।


Preconditions.checkNotNull() এবং Preconditions.checkArgument() আপনার কোডে ইনপুট ভ্যালিডেশন সহজ এবং কার্যকরী করতে সাহায্য করে। এই দুটি মেথড ব্যবহারের মাধ্যমে আপনি কোডের স্থিতিশীলতা নিশ্চিত করতে পারেন এবং সাধারণ ত্রুটিগুলি হ্যান্ডেল করতে পারেন।

Content added By

Preconditions এর মাধ্যমে Input Validation

288

Guava লাইব্রেরি Java প্রোগ্রামিংয়ে Input Validation সহজ এবং কার্যকর করতে Preconditions ক্লাস সরবরাহ করে। এটি কোডে ইনপুট চেক করার জন্য একাধিক সুবিধাজনক মেথড প্রদান করে, যা IllegalArgumentException, NullPointerException, এবং অন্যান্য ত্রুটি প্রতিরোধে সাহায্য করে।


Preconditions এর ধারণা

Preconditions হলো Guava-এর একটি ক্লাস যা প্যারামিটার চেক করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে কোনো মেথডে পাস করা ইনপুট বৈধ (valid) এবং প্রয়োজনীয় শর্ত পূরণ করে। Preconditions ব্যবহার করলে কোডের নিরাপত্তা এবং রক্ষণাবেক্ষণযোগ্যতা বৃদ্ধি পায়।


Preconditions ক্লাসের প্রধান মেথডসমূহ

checkArgument(boolean expression, String errorMessage)

এই মেথডটি ব্যবহার করে ইনপুট প্যারামিটারের মান সঠিক কিনা তা যাচাই করা হয়। যদি শর্ত মিথ্যা হয়, তাহলে IllegalArgumentException ছোড়া হয়।

import com.google.common.base.Preconditions;

public class CheckArgumentExample {
    public static void main(String[] args) {
        int age = 15;

        // Validate age
        Preconditions.checkArgument(age >= 18, "Age must be 18 or above");
    }
}

checkNotNull(object, String errorMessage)

এই মেথডটি কোনো অবজেক্ট null কিনা তা যাচাই করে। যদি null থাকে, তাহলে NullPointerException ছোড়া হয়।

import com.google.common.base.Preconditions;

public class CheckNotNullExample {
    public static void main(String[] args) {
        String name = null;

        // Validate name
        Preconditions.checkNotNull(name, "Name cannot be null");
    }
}

checkState(boolean expression, String errorMessage)

এই মেথডটি একটি অবজেক্টের স্টেট সঠিক কিনা তা যাচাই করে। যদি স্টেট ভুল হয়, তাহলে IllegalStateException ছোড়া হয়।

import com.google.common.base.Preconditions;

public class CheckStateExample {
    public static void main(String[] args) {
        boolean isLoggedIn = false;

        // Validate login state
        Preconditions.checkState(isLoggedIn, "User must be logged in");
    }
}

checkElementIndex(index, size, String errorMessage)

এই মেথডটি তালিকার (list) ইনডেক্স সঠিক কিনা তা যাচাই করে। যদি ইনডেক্স সঠিক না হয়, তাহলে IndexOutOfBoundsException ছোড়া হয়।

import com.google.common.base.Preconditions;

import java.util.List;
import java.util.Arrays;

public class CheckElementIndexExample {
    public static void main(String[] args) {
        List<String> items = Arrays.asList("Apple", "Banana", "Guava");

        // Validate index
        int index = 5;
        Preconditions.checkElementIndex(index, items.size(), "Index out of bounds");
    }
}

checkPositionIndex(index, size, String errorMessage)

এই মেথডটি একটি পজিশন (position) সঠিক কিনা তা যাচাই করে। এটি checkElementIndex এর মতো, তবে পজিশন চেকের জন্য আরও নির্দিষ্ট।


Preconditions এর সুবিধা

  1. ত্রুটি প্রতিরোধ: ইনপুট ভ্যালিডেশনের মাধ্যমে কোডের ত্রুটি কমানো যায়।
  2. কোডের সরলতা: শর্ত চেক করার জন্য কম কোড লিখতে হয়।
  3. ত্রুটির বর্ণনা: ত্রুটি ঘটলে নির্দিষ্ট এবং স্পষ্ট বর্ণনা প্রদান করা হয়।
  4. ডিবাগিং সহজ: ইনপুট চেকের কারণে সমস্যা সহজেই চিহ্নিত করা যায়।

Preconditions এর সীমাবদ্ধতা

  1. অতিরিক্ত প্রসেসিং: প্রতিটি ইনপুট চেক করতে হলে কিছুটা অতিরিক্ত প্রসেসিং প্রয়োজন।
  2. কাস্টম ভ্যালিডেশন: জটিল বা কাস্টম ইনপুট চেক করার জন্য আলাদা কোড লিখতে হতে পারে।
  3. রানটাইম চেক: Preconditions শুধুমাত্র রানটাইমে চেক করে, কম্পাইল টাইমে নয়।

Preconditions ক্লাস Java কোডে Input Validation সহজ, দ্রুত এবং কার্যকর করে। এটি নিশ্চিত করে যে মেথডের ইনপুট সঠিক এবং প্রয়োজনীয় শর্ত পূরণ করে। বিশেষত ডেটা-সংশ্লিষ্ট অ্যাপ্লিকেশন বা API উন্নয়নে Preconditions ব্যবহার একটি আদর্শ পদ্ধতি।

Content added By

Preconditions এর জন্য Best Practices

292

Guava এর Preconditions ক্লাস ব্যবহার করে Java প্রোগ্রামে input validation বা state validation আরও সহজ এবং কার্যকরী করা যায়। এটি ডেভেলপারদের নির্দিষ্ট শর্ত যাচাই করতে এবং কোডে বাগ কমাতে সাহায্য করে।


Preconditions কী?

Preconditions হল Guava-এর একটি ইউটিলিটি ক্লাস, যা কোড এক্সিকিউট করার আগে বিভিন্ন শর্ত যাচাই করার জন্য ব্যবহৃত হয়। শর্ত ব্যর্থ হলে এটি স্বয়ংক্রিয়ভাবে Exceptions (যেমন IllegalArgumentException, NullPointerException) নিক্ষেপ করে।


Preconditions এর প্রধান মেথড

১. checkArgument

একটি আর্গুমেন্ট যাচাই করার জন্য ব্যবহৃত হয়। শর্ত ব্যর্থ হলে এটি IllegalArgumentException নিক্ষেপ করে।

Preconditions.checkArgument(expression, errorMessage);

২. checkNotNull

একটি অবজেক্ট null কিনা তা যাচাই করে। যদি null হয়, তাহলে এটি NullPointerException নিক্ষেপ করে।

Preconditions.checkNotNull(object, errorMessage);

৩. checkState

একটি অবজেক্টের বর্তমান অবস্থা যাচাই করে। শর্ত ব্যর্থ হলে এটি IllegalStateException নিক্ষেপ করে।

Preconditions.checkState(expression, errorMessage);

৪. checkElementIndex

একটি ইন্ডেক্স যাচাই করে। ইন্ডেক্স যদি বৈধ না হয়, তাহলে IndexOutOfBoundsException নিক্ষেপ করে।

Preconditions.checkElementIndex(index, size, errorMessage);

৫. checkPositionIndex

ইন্ডেক্সের অবস্থান বৈধ কিনা তা যাচাই করে। ব্যর্থ হলে IndexOutOfBoundsException নিক্ষেপ করে।

Preconditions.checkPositionIndex(index, size, errorMessage);

৬. checkPositionIndexes

শুরুর এবং শেষের ইন্ডেক্স যাচাই করে। এটি নিশ্চিত করে যে শুরু ইন্ডেক্স ছোট এবং উভয় ইন্ডেক্স বৈধ।

Preconditions.checkPositionIndexes(start, end, size);

Preconditions এর Best Practices

১. Input Validation এর জন্য ব্যবহার করুন

Preconditions ব্যবহার করে প্রোগ্রামের ইনপুট ডেটার বৈধতা যাচাই করুন। এটি ব্যবহারকারীর ভুল ইনপুটের কারণে সৃষ্ট সমস্যাগুলি এড়াতে সাহায্য করে।

public void setAge(int age) {
    Preconditions.checkArgument(age > 0, "Age must be positive");
    this.age = age;
}

২. Null Handling এর জন্য ব্যবহার করুন

কোডের মধ্যে null checks সুনির্দিষ্ট করতে checkNotNull ব্যবহার করুন।

public void setName(String name) {
    this.name = Preconditions.checkNotNull(name, "Name cannot be null");
}

৩. Readable Error Messages ব্যবহার করুন

যাচাই ব্যর্থ হলে ব্যবহারকারীর জন্য একটি স্পষ্ট এবং অর্থপূর্ণ error message প্রদান করুন।

Preconditions.checkArgument(score >= 0 && score <= 100, 
    "Score must be between 0 and 100");

৪. State Validation নিশ্চিত করুন

একটি অবজেক্টের সঠিক অবস্থায় থাকার নিশ্চয়তা দিতে checkState ব্যবহার করুন।

public void start() {
    Preconditions.checkState(!isStarted, "Service is already started");
    isStarted = true;
}

৫. Index Validation নিশ্চিত করুন

ইন্ডেক্স নিয়ে কাজ করার সময় এটি বৈধ কিনা তা নিশ্চিত করতে checkElementIndex এবং checkPositionIndexes ব্যবহার করুন।

public int getElementAt(int index) {
    return list.get(Preconditions.checkElementIndex(index, list.size(), 
        "Index out of bounds"));
}

৬. Overhead কমানোর জন্য প্যারামিটারাইজড মেসেজ ব্যবহার করুন

ডায়নামিক মেসেজ তৈরি করার জন্য String.format বা প্যারামিটারাইজড পদ্ধতি ব্যবহার করুন।

Preconditions.checkArgument(value > 0, "Value must be positive: %s", value);

কেন Preconditions ব্যবহার করবেন?

  1. কোড পরিষ্কার এবং সংক্ষিপ্ত রাখে।
  2. NullPointerException এবং IllegalArgumentException-এর ঝুঁকি কমায়।
  3. শর্তভিত্তিক যাচাই সহজ করে।
  4. ডিবাগিং এবং এরর মেসেজ আরও সুনির্দিষ্ট করে।

পূর্ণাঙ্গ উদাহরণ

import com.google.common.base.Preconditions;

public class PreconditionsExample {
    public static void main(String[] args) {
        int age = -5;
        Preconditions.checkArgument(age > 0, "Age must be positive: %s", age);

        String name = null;
        Preconditions.checkNotNull(name, "Name cannot be null");

        int index = 5;
        Preconditions.checkElementIndex(index, 3, "Index out of bounds");
    }
}

সীমাবদ্ধতা

  • Runtime Overhead: Preconditions সবসময় রানটাইমে যাচাই করে, যা কিছুটা পারফরম্যান্সে প্রভাব ফেলতে পারে।
  • শুধুমাত্র ডেভেলপারদের জন্য সহায়ক: ব্যবহারকারীর সাথে সরাসরি ইন্টারফেসের ক্ষেত্রে Preconditions ব্যবহার সেরা নয়।

Guava এর Preconditions ক্লাস Java প্রোগ্রামিংয়ে ইনপুট যাচাই এবং অবস্থা নিশ্চিত করার জন্য একটি শক্তিশালী টুল। এটি সঠিকভাবে ব্যবহার করলে কোড আরও নিরাপদ, সুনির্দিষ্ট এবং সহজবোধ্য হয়।

Content added By
Promotion

Are you sure to start over?

Loading...