Anti Pattern & Code Smell

Anti Pattern & Code Smell

Development လုပ်တဲ့အခါ ဘယ်လို ဝိသေသ ရှိတဲ့ code တွေကတော့ကောင်းတယ်ဆိုတာသိဖို.လိုသလို ဘယ်လိုလက္ခဏာရှိတဲ့ code တွေကတော့ မကောင်းဘူးလဲဆိုတာသိဖို.လိုပါတယ်။ ကောင်းတာတွေဖို.ကျတော့ design principle , pattern တွေကို နားလည်ရမှာပါ။ မကောင်းတဲ့ဟာတွေကိုကျတော့ anti pattern, code smell လို.သုံးကြပါတယ်။ ဆိုချင်တာက ကိုယ့် code က အဲ့လိုဖြစ်နေပြီဆိုရင် ဒါသည် မကောင်းတော့ဘူး၊ ဒီလိုမဖြစ်အောင်ရေးရမယ်လို.ဆိုချင်တာပါ။

Anti pattern ဆိုတာ solution ကို wrong design သုံးထားတာ။ ဆိုချင်တာက အဖြေအရတော့မှန်ချင်မှန်မယ် design thinking , pattern thinking ဘက်ကကြည့်ရင်မကောင်းတဲ့ pattern တွေကိုပြောတာ (ဒီနေရာမှာ design ဆိုတာ UI ကိုပြောတာမဟုတ်ပဲနဲ. Software Design , Object Oriented Design အဲ့တာတွေကိုဆိုလိုတာ)။ Code smell ကတော့ ကြည့်ကိုသေချာကြည့်သင့်တယ် သူတို.မှာမှားနေတာဖြစ်နိုင်တယ်။ Design level ထက် implementation level လို.ပြောရမယ်။

အောက်ကကောင်တွေက Anti pattern တွေ
Singleton Overuse

Singleton ကိုအရမ်းအသုံးများလွန်းတာ၊ နောက်ပိုင်းမှာ Singleton ကို anti pattern ထဲထဲ့လာကြပါတယ်။ အဓိကကတော့ debug လုပ်ရတာခက်တယ် ။ Unit testing အတွက်မကောင်းဘူး။ TDD မှာ Inject လုပ်ရတာ အဆင်မပြေဘူး အစရှိတာတွေကြောင့်ပါ။

Functional Decomposition

ဒါကတော့ OO Language တွေမှာ functional decomposition ကိုသုံးပြီး class တွေကို verb အနေနဲ. သုံးနေတာကိုပြောတာပါ။ ဆိုချင်တာက paradigm အရ OO Language မှာ class တွေ သည် Object အနေနဲ.ပဲသုံးသင့်တယ်။ Property , method တွေပါရမယ် ဒါမှမဟုတ်ပဲ class တွေသည် verb သဘောကို ဆောင်နေရင် ဥပမာ DoSomethingClass အဲ့လိုဖြစ်နေရင် ဒါသည် OO concept ကိုသုံးတာမဟုတ်ပဲ imperative ရဲ. function concept ကိုသုံးနေတာပါ။ အဲ့တော့ anti pattern ပါ။

Poltergeist

ဟိုနေရာမှာ ပေါ်လာလိုက် ဒီနေရာမှာ သုံးလိုက်ပျောက်သွားလိုက်ဖြစ်တဲ့ code မျိုးပါ။ Single responsibility ကိုမလိုက်နာပဲနဲ. သူတို.မှာ ဘာရည်ရွယ်ချက် မယ်မယ်ရရ မပြနိုင်တဲ့ကောင်တွေကိုဆိုချင်တာပါ။

Spaghetti

ဒါကတော့ Spaghetti ခေါက်ဆွဲလို code တွေက ရှုပ်ပွနေတာ method တခုမှာ line အရေအတွက် များနေတာ။ Object တွေက အချင်းချင်း သူ. properties ငါယူသုံးလိုက် ငါ့ properties သူယူသုံးလိုက်နဲ. communication အရမ်းများနေတာ။ ဒီနေရာမှာ Object တွေ က private variable တွေ properties တွေကိုတိုက်ရိုက်ယူသုံးရင် tight coupling ဖြစ်မယ် နောက်ပြီးတော့ communication အရ ရှပ်မယ်အဲ့တော့ public method interface တွေကိုမသုံးပဲ ရှုပ်ထွေးနေတဲ့ class interation ရှိနေတာကိုဆိုလိုတာ။

Premature Optimization

Premature Optimization is evil လို.Donald Knuth ကပြောခဲ့ဖူးတယ်။ ဘာကိုဆိုလိုတာလဲဆိုတော့ Software တခုက design အဆင့်မှာ ဘာပြဿနာမှမရှိသေးခင် အရမ်းကြီး optimization ဖို.မစဉ်းစားသင့်ဘူး။ နောက်ကြုံလာမှသာဖြေးဖြေးချင်းလုပ်သင့်တယ်။ Optimization ကိုစဉ်းစားပြီးတော့ အရမ်းကြီး ကြိုလုပ်လိုက်ရင် design ပိုင်းအရ ထိတတ်တယ်။ ဒါကိုဆိုတာ။

Analysis Paralysis

ဒါက တခုခုကို အသေးစိတ်အရမ်း စဉ်းစားလွန်းတာ analysis လုပ်တာ။ အဲ့တော့ရှေ.မရောက်ဘူး မှားသွားမှာ စိုးရိမ်မှု.လွန်ကဲတဲ့သူတွေ နောက်ပြီး tool တွေရဲ. အကျိုးအပြစ်ကိုသိတဲ့သူတွေ ဖြစ်တာပိုများတယ်။

God Class

Class တခုတည်းကနေ အကုန်လုံးကို သိနေတာ အကုန်လုံးအတွက်လုပ်ပေးနေရတာ ဒါသည် single responsiblitiy principle ကိုဖောက်ဖြတ်တဲ့အတွက် မသင့်တော်ဘူး။

ဆက်ရန်။

ဒါကို OO Principle,Design Pattern တွေ Code quality metric တွေနဲ.တွဲဖတ်ရင်ပိုအဆင်ပြေမယ်။

OO Principle and Pattern Series
https://www.facebook.com/thet.khine.587/posts/10208694997691875

Code quality metric
https://www.facebook.com/thet.khine.587/posts/10206327308941136

Original post=>( https://m.facebook.com/story.php?story_fbid=pfbid02McARsyg56GfgCGs79UKZMKz1yyxEkywW14euLdyjigTdy2EsHapv3PiYiHSgmxp2l&id=1819241055&mibextid=Nif5oz )

Leave a comment