Design System

Code Refactoring & Technical Debt

အားလုံးပဲ မဂၤလာပါ ခင္ဗ်။
ကြၽန္ေတာ္က‌ေတာ့ Spiceworks Myanmar မွာ Front End Developer အျဖစ္ဝင္ေရာက္လုပ္ကိုင္ေနတဲ့ ေမာင္ေဝလ်ံျပည့္ ျဖစ္ပါတယ္ခင္ဗ်။ ကြၽန္ေတာ္ယခုအပတ္မွာ မွ်‌ေဝေပးသြားမွာကေတာ့ Code refactoring ပဲျဖစ္ပါတယ္ဗ်။ code refactoring ဆိုတာကေတာ့ ကြၽန္ေတာ္တို႔‌ေရးသားထားတဲ့ code ေတြကို အရွင္းလင္းဆုံးနဲ႔ နားလည္ရလြယ္ကူေအာင္ လုပ္ေဆာင္ျခင္းျဖစ္တယ္ဗ်။ Code refactoring ကို ဘာေၾကာင့္လုပ္ရတယ္၊ ဘယ္လိုနည္းလမ္းေတြနဲ႔ လုပ္ေဆာင္သင့္တယ္ ဆိုတာေတြကို ကြၽန္ေတာ္အခု ရွင္းျပေပးသြားမွာပါဗ်။

ပထမဦးဆုံး Code refactoring ကိုမေျပာခင္ Technical Debt ဆိုတဲ့ အေၾကာင္းေလးကို အရင္ရွင္းျပမယ္ဗ်။ Technical Debt ဆိုတာက တိုက္႐ိုက္ေျပာရင္ေတာ့ နည္းပညာပိုင္းဆိုင္ရာအေႂကြးဗ်။ အဲ့ဒါက ဘာကို ဆိုလိုတာလည္းဆိုေတာ့ ကြၽန္ေတာ္တို႔ features ေတြ၊ programs ေတြကို project တစ္ခုမွာ စၿပီးေရးတာပဲျဖစ္ျဖစ္၊ အသစ္အေနနဲ႔ ထပ္ထည့္လိုတဲ့ အခါမ်ိဳးမွာ အခ်ိန္မရလို႔ဘဲ ျဖစ္ျဖစ္၊ ေမ့သြားတာမ်ိဳးပဲျဖစ္ျဖစ္၊ ဒါမွမဟုတ္ Code refactoring လုပ္သင့္တယ္ဆိုတာကို လုံးဝမသိလို႔ဘဲျဖစ္ျဖစ္၊ ကြၽန္ေတာ္တို႔ရဲ႕ Code ေတြကို project ၿပီးႏိုင္ရန္အတြက္ အျမန္‌ေရးတဲ့အခါေတြမွာ Technical Debt ဆိုတဲ့အရာကို ျဖစ္ေပၚေစတယ္ဗ်။ ဆိုလိုတာကေတာ့ ျမန္ျမန္ေရးတဲ့အတြက္ေၾကာင့္ code ေတြကို refactoring မလုပ္ႏိုင္ဘူးဗ်။ အဲ့လိုမလုပ္ႏိုင္တဲ့အတြက္ေၾကာင့္ တစ္ခ်ိန္မွာ ကိုယ္လုပ္ေနတဲ့ project ကိုပိုၿပီးေႏွာင့္‌ေႏွးသြားေစတယ္ဗ်။ ဥပမာအေနႏွင့္ ေျပာရမယ္ဆိုရင္ေတာ့ Code refactoring မလုပ္ခဲ့တဲ့အတြက္ေၾကာင့္ ကိုယ့္ရဲ႕ code က တစ္ခ်ိန္မွာ ျပန္သုံးတာပဲျဖစ္ျဖစ္၊ ျပန္လည္ျပင္ဆင္တာပဲျဖစ္ျဖစ္ လုပ္ေဆာင္တဲ့အခါမွာ ေငြကုန္ၿပီးအခ်ိန္ပါေပးရတဲ့အတြက္ေၾကာင့္ project ၿပီးရမယ့္ရက္ကိုေနာက္က်ေစတာမ်ိဳး၊ ဒါမွမဟုတ္ ျပင္ဆင္ၿပီးအသုံးျပဳဖို႔အတြက္ အဲ့ဒီ project ကိုေရးခဲ့တဲ့သူကို ျပန္ေခၚရတာမ်ိဳး စသည့္ ျပႆနာမ်ားကို ႀကဳံေတြ႕ရတဲ့အတြက္ေၾကာင့္ Technical Debt ကိုျဖစ္ေစတယ္ဗ်။

အခု ဒီ Code refactoring ကို ဘာေၾကာင့္ လုပ္သင့္တာလည္းဆိုတာကို ေျပာသြားမွာျဖစ္ပါတယ္ဗ်။ ကြၽန္ေတာ္တို႔ Code refactoring ကို ‌ေလ့က်င့္ျခင္းအားျဖင့္ Technical Debt ျဖစ္ေပၚေစႏိုင္တဲ့ အေၾကာင္းအရာေတြကို ေရွာင္ၾကဥ္ႏိုင္ၿပီး ကိုယ့္ရဲ႕ code က ရွင္းရွင္းလင္းလင္းနဲ႔ ထိန္းသိမ္းျပင္ဆင္မႈေတြကို လုပ္ေဆာင္တဲ့အခ်ိန္မွာ လြယ္ကူလ်င္ျမန္ေစတဲ့ အက်ိဳးေက်းဇူးေတြကို ရႏိုင္မွာျဖစ္ပါတယ္ဗ်။ အဲ့ဒီမွာကြၽန္ေတာ္ေျပာခ်င္တာကေတာ့ Technical Debt ျဖစ္ေပၚေစႏိုင္တဲ့ အေၾကာင္းအရာေတြဆိုတာကိုပါ။ Technical Debt ျဖစ္ေပၚေစႏိုင္တဲ့ အေၾကာင္းအရာေတြထဲကမွ ကြၽန္ေတာ္အေနနဲ႔ အေရးႀကီးတယ္လို႔ ယူဆရတဲ့အေၾကာင္းအရာေလး‌ေတြကိုလည္း မွ်ေဝေပးခ်င္တယ္ဗ်။

Documentation လို႔ေခၚတဲ့ project တစ္ခုရဲ႕ လုပ္ေဆာင္ခ်က္ေတြ မထားရွိျခင္း၊ code ေတြကို အစမ္းမသုံးၾကည့္ဘဲ project တစ္ခုကို ေရးသားျခင္း၊ အဖြဲ႕သားအခ်င္းခ်င္း ခ်ိတ္ဆက္နားလည္မႈမရွိျခင္း၊ Code refactoring လုပ္ေဆာင္ရန္အခ်ိန္ေႏွာင့္ေႏွးျခင္း၊ project ကိုဦးေဆာင္မည့္သူ၏ တာဝန္ပ်က္ကြက္မႈမ်ားျခင္း၊ code ေရးသူ၏ နည္းပညာပိုင္းဆိုင္ရာ အားနည္းျခင္း ေတြက Technical Debt ျဖစ္ေပၚေစႏိုင္ရန္ အားေပးတဲ့ အခ်က္ေတြ ျဖစ္ပါတယ္ဗ်။ အဲ့ဒါေတြထဲကမွ Code refactoring လုပ္ေဆာင္ရန္အခ်ိန္ေႏွာင့္ေႏွးျခင္း ဆိုတဲ့ အခ်က္ကို မျဖစ္ေပၚေစေအာင္ ဘယ္လိုလုပ္ရမယ္ဆိုတာကို ေျပာျပေပးမယ္ဗ်။
Code refactoring ကို စၿပီး က်င့္သုံးခ်င္တဲ့သူေတြအတြက္ ပထမဦးဆုံး ကိုယ္ေရးေနတဲ့ project ကိုၿပီးေျမႇာက္ေအာင္ အရင္ေရးပါ။ ေနာက္တစ္ႀကိမ္ project ကိုေရးတဲ့အခါမွာ ပထမဆုံးေရးခဲ့တဲ့ project ထက္ပိုေကာင္းတဲ့ code မ်ိဳးထြက္လာေအာင္ စဥ္းစားၿပီး ေရးပါ။ တတိယအႀကိမ္ေျမာက္ project ကိုေရးမယ္ဆို code refactoring လုပ္ေဆာင္ရန္ အခ်ိန္ကို မွန္းၿပီး ခ်န္ထားသင့္ပါတယ္ဗ်။ ေနာက္ၿပီးေတာ့ ဒီ Code refactoring ကို ကိုယ့္ project မွာ features ေတြ၊ programs ေတြကို ထပ္တိုးခ်င္တဲ့အခါမွာ ကိုယ္က သူမ်ားရဲ႕ code ကို ယူသုံးမယ္ဆိုရင္ ပထမဦးဆုံး code refactoring ကိုလုပ္ေဆာင္သင့္ပါတယ္ဗ်။ အဲ့လိုလုပ္လိုက္ျခင္းအားျဖင့္ ကိုယ္ႏွင့္အတူ အလုပ္လုပ္မယ့္သူေတြအတြက္ပါ ပိုၿပီးလြယ္ကူေစၿပီးအခ်ိန္ကုန္သက္သာေစပါတယ္ဗ်။ အဲ့လိုလုပ္ေဆာင္လိုက္ျခင္းျဖင့္ ေနာင္ project ကို ျပင္ဆင္ထိန္းသိမ္းရာမွာ သိသာသြားေစမွာပါဗ်။ Code refactoring ကို bug ေတြျပင္ဆင္တဲ့အခါမ်ိဳးမွာလည္း တစ္ခါတည္းလုပ္ေဆာင္သင့္ပါတယ္ဗ်။ အဲ့လိုလုပ္လိုက္ျခင္းအားျဖင့္ ကိုယ့္ code ရဲ႕ နားလည္ႏိုင္မႈကိုပါ တိုးတက္ေစႏိုင္ၿပီး project တစ္ခုလုံးကို Code refactoring လုပ္တဲ့အခါမွာ အခ်ိန္ကုန္သက္သာေစမွာပါဗ်။ ကြၽန္ေတာ္တို႔ project ဒါမွမဟုတ္ product တစ္ခုကို အသုံးျပဳသူေတြထံကို ခ်မျပခင္အခ်ိန္ျဖစ္တဲ့ ကိုယ့္ project ဒါမွမဟုတ္ product ရဲ႕ code ေတြကို ေနာက္ဆုံးစမ္းသပ္တဲ့ အခ်ိန္မ်ိဳးမွာလည္း Code refactoring ကို တစ္ခါတည္းလုပ္ေဆာင္သင့္ပါတယ္ဗ်။ အဲ့ဒီလိုလုပ္ေဆာင္ထားခဲ့မွသာလွ်င္ ေနာက္ပိုင္းေပၚေပါက္လာမည့္ bug မ်ားအားပိုမို လြယ္ကူစြာႏွင့္ အခ်ိန္တိုအတြင္း ေျဖရွင္းႏိုင္မွာပါဗ်။ ေနာက္ဆုံးအေနႏွင့္ ေျပာျပေပးခ်င္တာကေတာ့  Code refactoring လုပ္တဲ့အခါမွာ function ေတြ feature အသစ္ေတြထပ္ၿပီး မထည့္ဖို႔ပါပဲဗ်။

ကြၽန္ေတာ္ရဲ႕ ေနာက္တစ္ႀကိမ္ မွ်ေဝရမယ့္ အခ်ိန္‌‌ေရာက္ရင္ ကြၽန္ေတာ္ေျပာျပေပးသြားမယ့္ အေၾကာင္းအရာကေတာ့ Code refactoring လုပ္ေဆာင္တဲ့ နည္းလမ္း (၆) ခ်က္ကို မွ်ေဝေပးသြားမွာျဖစ္ပါတယ္ဗ်။ အဲ့ဒီအခ်က္ေလးေတြကေတာ့ Composing Methods, Moving Features between Objects, Organizing Data, Simplifying Conditional Expressions, Simplifying Method Calls ႏွင့္ Dealing with Generalization ဆိုတာေတြပဲျဖစ္ပါတယ္ဗ်။ ေနာက္လာမည့္ အပတ္တြင္ယခု blog ရဲ႕အဆက္အား ေစာင့္‌ေမွ်ာ္ဖတ္ရႈေပးပါဦးလို႔႔ ေျပာၾကားရင္း ဒီ blog ကို နိဂုံးခ်ဳပ္လိုက္ပါတယ္ဗ်။ အားလုံးကို ယခုလိုအခ်ိန္ေပးၿပီး ဖတ္ရႈေပးတဲ့အတြက္ ေက်းဇူးအမ်ားႀကီးတင္ပါတယ္ဗ်။

Hello

Leave a Reply

Your email address will not be published. Required fields are marked *