নাল ব্যবহার করবেন না, 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অন্যান্য সময়ে যাচাই করা উচিত যে আপনি এটি সম্পর্কে যুক্তিসঙ্গত কিছু করতে পারেন।