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 *