ভালো কোড মন্দ কোড: জাভা পার্ট - 4

bad-codegood-codejava-optional


জাভা ৮ থেকে ফাংশন ফিচারের সাথে অপশনাল যুক্ত করা হয়েছে। অপশনাল খুবই পাওয়ারফুল একটা ফিচার বলে মনে করি।কিভাবে অপশনাল এর সঠিক ব্যবহার করা যায় তার কিছু উদাহরণ দেয়া হলো। 



কখনো অপশনালএ নাল এসাইন করা উচিত না। কারণ নাল হ্যান্ডেল করার জন্যই অপশনাল। এর ভেতরে হয় ফাঁকা বা কোন ভ্যালু থাকে। অপশনাল কে একটা ফাঁকা বক্সের সাথে তুলনা করা যেতে পারে।


মন্দ কোড

public Optional<Address> fetchAddress() {
    Optional<Address> emptyAddress = null;
}



ভালো কোড

public Optional<Address> fetchAddress() {
    Optional<Address> emptyAddress = Optional.empty();
}






সরাসরি অপশনাল অবজেক্টের গেট কল করা উচিত না। আগে isPresent চেক করে নেয়াউচিত


মন্দ কোড

Optional<Address> optionalAddress= user.address();
Address address = optionalAddress.get(); 




ভালো কোড

Optional<Address> optionalAddress = user.address();
if (optionalAddress.isPresent()) {
  Address address = optionalAddress.get(); 
} else {
  // Do whatever 
}





Optional.of(object) এবং Optional.ofNullable(object) দুইটা দুই জিনিস।


Optional.of(object) হচ্ছে আমি জানি object নাল না বা যদি নাল হয়ে থাকে তাহলে এক্সেপশন দিবে।

Optional.ofNullable(object) হচ্ছে আমার অবজেক্ট নাল হলেও কোন এক্সেপশন দিবে না.



মন্দ কোড

public Optional<String> fetchItemName(long id) {
    String itemName = null; // ভ্যালু যেটা নাল হতে পারে 
    return Optional.of(itemName); 
}


ভাল কোড

public Optional<String> fetchItemName(long id) {
    String itemName = null; // ভ্যালু যেটা নাল হতে পারে 
    return Optional.ofNullable(itemName); 
}