මගේ මතය අනුව NULL නැවත පැමිණීම, යම් හිස් ප්රති result ලයක් ලබා දීම (උදා: හිස් නූල හෝ හිස් ලැයිස්තුවක්) සහ ව්යතිරේකයක් විසි කිරීම අතර වෙනසක් ඇත.
මම සාමාන්යයෙන් පහත දැක්වෙන ප්රවේශය ගන්නෙමි. ශ්රිතයක් හෝ ක්රමයක් f (v1, ..., vn) ඇමතුම ශ්රිතයක යෙදුම ලෙස මම සලකමි
f : S x T1 x ... x Tn -> T
එහිදී S එය "ලෝකයේ තත්වය" T1, ..., Tn යනු ආදාන පරාමිතීන් වන අතර T යනු ආපසු එන වර්ගයයි.
මම මුලින්ම උත්සාහ කරන්නේ මෙම ශ්රිතය අර්ථ දැක්වීමටයි. ශ්රිතය අර්ධ නම් (එනම් එය අර්ථ දක්වා නොමැති ආදාන අගයන් කිහිපයක් තිබේ) මෙය සං signal ා කිරීම සඳහා මම NULL නැවත ලබා දෙමි. මෙයට හේතුව ගණනය කිරීම සාමාන්යයෙන් අවසන් කිරීමට මට අවශ්ය නිසා සහ මා ඉල්ලා ඇති ශ්රිතය ලබා දී ඇති යෙදවුම් මත අර්ථ දක්වා නොමැති බවයි. ආදාන මත ශ්රිතය අර්ථ දක්වා ඇති නිසාත්, හිස් නූල නිවැරදි ප්රති .ලය නිසාත්, උදා: ප්රතිලාභ අගයක් ලෙස හිස් නූලක් භාවිතා කිරීම අපැහැදිලි ය.
මම කරන මා ෙවත පවරා කේතය දී NULL පහිටුම් දක්වනය සඳහා අමතර චෙක්පත හිතන්නේ අවශ්ය ඔබ අර්ධ කාර්යය අයදුම් කර ඇති අතර එය ලබා දී ආදානය සඳහා අර්ථ දක්වා නැත නම්, ඔබ නම් ශ්රිතය කියන්න හඳුන්වන ක්රමය කර්තව්යය නිසා.
ගණනය කිරීම සිදු කිරීමට ඉඩ නොදෙන දෝෂ සඳහා ව්යතිරේක භාවිතා කිරීමට මම කැමැත්තෙමි (එනම් පිළිතුරක් සොයා ගැනීමට නොහැකි විය).
උදාහරණයක් ලෙස, මට පන්තියේ ගනුදෙනුකරුවෙකු සිටින අතර මට ක්රමයක් ක්රියාත්මක කිරීමට අවශ්ය යැයි සිතමු
Customer findCustomer(String customerCode)
යෙදුම් දත්ත ගබඩාවේ ගනුදෙනුකරුවෙකු එහි කේතය මගින් සෙවීමට. මෙම ක්රමය තුළ, මම කැමතියි
- විමසුම සාර්ථක නම් පන්ති පාරිභෝගිකයාගේ වස්තුවක් ආපසු එවන්න,
- විමසුමේ කිසිදු ගනුදෙනුකරුවෙකු සොයාගත නොහැකි නම් ශුන්යය වෙත ආපසු යන්න.
- දත්ත සමුදායට සම්බන්ධ වීමට නොහැකි නම් ව්යතිරේකයක් විසි කරන්න.
ශුන්ය සඳහා අමතර චෙක්පත්, උදා
Customer customer = findCustomer("...");
if (customer != null && customer.getOrders() > 0)
{
...
}
මම කරන දෙයෙහි අර්ථකථනයේ කොටසක් වන අතර කේතය වඩා හොඳින් කියවීම සඳහා මම "ඒවා මඟහරින්නේ" නැත. කේතය සරල කිරීම සඳහා ගැටලුවේ අර්ථ නිරූපණය සරල කිරීම හොඳ පුරුද්දක් යැයි මම නොසිතමි.
ඇත්ත වශයෙන්ම, ශුන්යය පරීක්ෂා කිරීම බොහෝ විට සිදුවන බැවින් භාෂාව ඒ සඳහා විශේෂ සින්ටැක්ස් සඳහා සහය දක්වන්නේ නම් හොඳයි.
පංතියක ශූන්ය වස්තුව අනෙක් සියලුම වස්තූන්ගෙන් වෙන්කර හඳුනාගත හැකි තාක් කල් (ශුන්ය වස්තු රටාව (ලාෆ් විසින් යෝජනා කරන පරිදි) භාවිතා කිරීම ගැන ද මම සලකා බලමි.