নাল ব্যবহার করবেন না, ptionচ্ছিক ব্যবহার করুন
আপনি উল্লেখ করেছেন যে, null
জাভাতে সবচেয়ে বড় সমস্যা হ'ল এটি সর্বত্র বা কমপক্ষে সমস্ত রেফারেন্স ধরণের জন্য ব্যবহার করা যেতে পারে ।
এটি হতে পারে null
এবং এটি কী হতে পারে তা বলা অসম্ভব ।
জাভা 8 প্রবর্তন অনেক ভালো প্যাটার্ন: Optional
।
এবং ওরাকল থেকে উদাহরণ:
String version = "UNKNOWN";
if(computer != null) {
Soundcard soundcard = computer.getSoundcard();
if(soundcard != null) {
USB usb = soundcard.getUSB();
if(usb != null) {
version = usb.getVersion();
}
}
}
যদি এগুলির প্রতিটি একটি সফল মান ফেরত দিতে বা না পারে তবে আপনি এপিআইগুলিকে Optional
এস তে পরিবর্তন করতে পারেন :
String name = computer.flatMap(Computer::getSoundcard)
.flatMap(Soundcard::getUSB)
.map(USB::getVersion)
.orElse("UNKNOWN");
প্রকারে স্পষ্টভাবে এনকোডিং বিকল্পের দ্বারা, আপনার ইন্টারফেসগুলি আরও ভাল হবে এবং আপনার কোডটি আরও পরিষ্কার হবে।
আপনি যদি জাভা 8 ব্যবহার না করে com.google.common.base.Optional
থাকেন তবে গুগল পেয়ারাতে দেখতে পারেন ।
পেয়ারা টিমের একটি ভাল ব্যাখ্যা: https://github.com/google/guava/wiki/UsingAndAvoidingNullExplained
নালাগুলির অসুবিধাগুলির আরও সাধারণ ব্যাখ্যা, বেশ কয়েকটি ভাষার উদাহরণ সহ: https://www.lucidchart.com/techblog/2015/08/31/the-worst-mistake-of-computer-s विज्ञान/
@ ননল, @ ননবল
জাভা 8 আইডিইর মতো সমস্যাগুলি ধরার জন্য কোড চেক করার সরঞ্জামগুলিতে সহায়তা করতে এই টীকাগুলি যুক্ত করে। তারা তাদের কার্যকারিতা মধ্যে মোটামুটি সীমিত।
যখন এটি বোধগম্য হয় তা পরীক্ষা করুন
আপনার কোড চেকিংয়ের 50% নাল লিখবেন না, বিশেষত যদি আপনার কোডটি কোনও null
মান দিয়ে করতে পারে তেমন বুদ্ধিমান কিছুই না থাকে ।
অন্যদিকে, যদি null
কিছু ব্যবহার করা যায় এবং কিছু বোঝাতে পারে তবে এটি অবশ্যই নিশ্চিত করে নিন।
শেষ পর্যন্ত, আপনি অবশ্যই null
জাভা থেকে সরাতে পারবেন না । আমি Optional
যখনই সম্ভব বিমূর্তিটি প্রতিস্থাপনের দৃ strongly়রূপে পরামর্শ দিচ্ছি , এবং null
অন্যান্য সময়ে যাচাই করা উচিত যে আপনি এটি সম্পর্কে যুক্তিসঙ্গত কিছু করতে পারেন।