ඔබ කාලයක් පසුකාලීනව සාර්ථකව ක්රියා කළ ෆංක්ෂන් එකක් දැක්කාම, හෙට දවසේ එය අහඹු ලෙස වැරදි පණිවුඩයක් දෙනවා කියලා සිතන්න. ටෙස්ට් සූට් රතු වීම, ලොග්ස් වල අරුතක් නොමැති වීම, එකම විස්තර 40 මිනිත්තු පමණ බලනවා—මෙවැනි අවස්ථාවක් ඔබට හමුවේද?
බොහෝ සංවර්ධකයින් දෝෂ නිරාකරණයට ස්වභාවික ක්රමයක් ගොඩක් සකස් කර නැත. එය සෑම වරක්ම අස්ථානගතව improvisation කරමින් යනවා. ප්රථම වැරැද්ද නම්, ගැටළුව තේරුම් ගැනීමට පෙරම සෘජුවම විසඳුමක් හෝ guard clause එකක් එක් කිරීමයි. 500 error එකක් දැකලා කේත කොටස් comment out කර දීමත් එම වර්ගයට අයත්. මෙවැනි “අඳුරු” වෙනස්කම් නිසැකවම ඇත්තේ ඇත්තේම නොවන ගැටළුව හෝ නව ගැටළුවක් හඳුන්වා දෙනවා.
ඇත්තේ කුමක්ද? පළමු පියවර ලෙස, ගැටළුව පැහැදිලිව ලියා තබන්න. “මට මෙය සිදු වීමට තිබුණා, නමුත් මෙහෙම සිදු වුණා” කියලා වචන වලින් සාරාංශ කරන්න. මෙය ඔබේ මනසක් “react” මට්ටමෙන් “observe” මට්ටමට පරිවර්තනය කරයි. රබර් ඩක් ඩිබගින්ග් (rubber duck debugging) වැනි තාක්ෂණයක් භාවිතා කර, කේතය විස්තර කරමින් ඔබේ අදහස් පිරික්සන්න – එවිට බොහෝ විට වැරැද්ද පෙනෙයි.
දෝෂය නැවත නිර්මාණය කළ හැකිද? නැතිනම්, එය අඩුම පරිමාණයේ reproducible example එකක් සාදන්න. අනවශ්ය dependencies ඉවත් කර, API calls stub data එකකට පරිවර්තනය කර, ඉන්පසු ගැටළුව තවමත් පවතින කේත කොටස පමණක් තබන්න. මේක කරගත් පසු, ඔබ දෝෂය සත්ය වශයෙන් පරීක්ෂා කර ඇති බවට තහවුරු කරගන්නවා.
අවසන් වශයෙන්, error message එක හොඳින් කියවන්න. බොහෝ විට සංවර්ධකයින් පළමු පේළිය පමණක් පරීක්ෂා කර, “මෙම exception එක හඳුනාගත්තා” කියලා තීරණයට පැමිණෙන්න. නමුත් stack trace එක bottom‑to‑top කියවීමෙන්, ගැටළුව ඇති වූ නියම ලයින් එක, ෆයිල් නාමය සහ line number එක හඳුනාගත හැකිය.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සහජීවී ශිෂ්යයන් – විශ්වවිද්යාල හා තාක්ෂණ පාඨමාලා වලදී ක්රමවත් දෝෂ නිරාකරණය ඉගෙන ගැනීම, කේත ගුණාත්මකභාවය ඉහළ ගනී.
- දේශීය සංවර්ධකයින් – කාලය හා සම්පත ඉතිරි කර, බිග් බ්රහස්පතින්දා පවා අඩු වශයෙන් නිවැරදි විසඳුම් ලබා දිය හැකිය.
- ව්යාපාරිකයන් – නිෂ්පාදන තත්වය තත්ත්වයෙන්ම වැඩිවීම, දෝෂ නිසා සිදුවන downtime අඩුවීම, ගනුදෙනුකරුවන්ගේ විශ්වාසය ශක්තිමත් වීම.
අවසානයට, ක්රමවත් දෝෂ නිරාකරණ වැඩපිළිවෙලක් ඔබේ කේත සංවර්ධන ජීවිතය සරල කරයි. අහඹු අනුමානවලට පසු නොවී, නිරීක්ෂණය, පුනර්නිර්මාණය සහ පද්ධතිමය විශ්ලේෂණය මඟින් ගැටළුවේ මූලික හේතුව ඉක්මනින් හඳුනාගන්න.