C# Coding Standards Part(6)
C# Coding Standards Part(6)
Don’t use HardCode
6.Hardcode တွေကိုတတ်နိုင်ရင်ဘယ်တော့မှမသုံးပါနဲ့။သူ့ကိုသုံးမဲ့အစား Constants ကိုသုံးပါ။
Constants ကို File ရဲ့အပေါ်မှာကြေညာပြီးတော့မှ ကိုယ်သုံးမဲ့ Code ထဲမှာယူသုံးပါ။
ဒါပေမဲ့ Constants ကို File အပေါ်မှာကြေညာပြီးတော့သုံးခြင်းကလည်း Coding Standard အရ စံမှီတဲ့ ရေးနည်းတော့မဟုတ်ပါဘူး။
Pure Coding Standard ကိုသုံးချင်တယ်ဆိုရင်တော့ ကိုယ်ရေးမဲ့ Constants ကို File အထဲမှာမကြေညာဘဲနဲ့ Configuration File ထဲမှာဖြစ်ဖြစ် Database ထဲမှာဖြစ်ဖြစ်ကြေညာထားပြီးမှမိမိရေးမဲ့ Code ထဲမှ ယူသုံးခြင်းကတော့ အမှန်တကယ် Coding Standard ကိုလိုက်နာထားသော ရေးနည်းသာဖြစ်ပါတယ်။
အဲ့ဒီလိုပြုလုပ်ခြင်းကဘာကောင်းကျိုးရသလဲဆိုတော့ နောင်တစ်ချိန်မှာပြန်ပြင်ချင်တဲ့အချိန်မျိုးရောက်ရင် ဖိုင်တွေအားလုံးကို လိုက်ပြင်နေစရာမလိုတော့ဘဲ ဖိုင်တစ်ခုထဲက Code ကိုပြင်လိုက်တာနဲ့သူ့ကိုသုံးထားတဲ့ ဖိုင်တွေအားလုံးကိုပြင်ပြီးသားဖြစ်သွားပါတယ်။
7.နောက်တစ်ခုကတော့ HardCode String တွေကိုမသုံးဘဲနဲ့ Resource Files တွေကိုသုံးပါ။
Configuration file , XML , Database တို့စသဖြင့်ကိုသုံးပါ။
8. string တွေကို တစ်ခုနဲ့တစ်ခု မနှုင်းယှဉ်မီ Lower Case (or) Upper Case ကိုပြောင်းပြီးမှ တစ်ခုနဲ့တစ်ခု Compare လုပ်သင့်ပါတယ်။ဒါမှသာ string တွေကို မတူညီတဲ့ Case တွေနဲ့ Compare လုပ်တဲ့အခါမှာ ပိုပြီးတော့ အဆင်ပြေမှာဖြစ်ပါတယ်။
If ( name.ToLower() == “Hello” )
{
// Code
}
9. တစ်ခါတစ်လေ ကျွန်တော်တို့ TextBox ထဲမှာ ရှိတဲ့စာသား (Character) တွေကိုရှင်းထုတ်ချင်တယ်ဆိုရင် ကျွန်တော်တို့ txt.Text=” ”; ဆိုပြီးတော့ ဘာမှမရှိတဲ့ string ကိုထည့်ပြီးတော့ ရှင်းခဲ့ဖူးပါတယ်။Coding Standard ကိုလိုက်နာမယ်ဆိုရင်တော့ အဲ့ဒီလိုမရေးသင့်ပါဘူး။
အဲ့ဒီလိုရေးမဲ့အစား .Net မှာအသင့်ပါတဲ့ string.Empty ကိုသုံးပါ။ပိုရှင်းသွားအောင် ဥပမာလေးနဲ့ကြည့်လိုက်ရအောင်။
if ( name == string.Empty )
{
// Code that do something
}
အဲ့ဒီလိုရေးရင် စံ ကိုလိုက်နာထားပါတယ်။
if ( name == “ “ )
{
// Code that do something
}
အဲ့ဒီလိုရေးရင်တော့ မလိုက်နာ ဘူးလို့ဆိုနိုင်ပါတယ်။
10. Member Variables တွေတတ်နိုင်ရင်တော့ သုံးခြင်းကို ရှောင်ပါ။ထို့ကြောင့် မိမိလိုအပ်တဲ့ နေရာရောက်မှဘဲ Local Variables တွေကိုကြေညာပြီးတော့ လိုသလိုသုံးပါ။ Member Variables ကိုကြေညာထားပြီး Method တွေအများကြီးက ယူသုံးနေရင် မလိုလားအပ်တဲ့ Error တွေတက်နိုင်ပါတယ်။အကယ်၍ Member Variables ကိုကြေညာထားပြီး Method တွေက Share လုပ်ပြီးယူသုံးတဲ့အခါမှာ ဘယ် Method က ဘယ်အချိန်မှာ ဘယ်နေရာကို ပြောင်းလဲသွားသလဲဆိုတာကို Track လိုက်ကြည့်တဲ့အခါမှာ ခက်ခဲသွားမှာဖြစ်ပါတယ်။
11. enum ကို အလျဉ်းသင့်သလိုသုံးပါ။ သိသာထင်ရှားပြီး မတူညီတဲ့ တန်ဖိုးတွေကို ဖော်ပြချင်တယ်ဆိုရင် string (or) number တွေကိုမသုံးပါနဲ့။ဥပမာနဲ့ပြောရရင် Gender ဆိုရင် Male နဲ့ Female ဘဲရှိတဲ့အတွက် သူ့ကိုကြေညာရင် string နဲ့မကြေညာဘဲနဲ့ .Net မှာပါတဲ့ enum ကိုသုံးပြီးတော့ကြေညာသင့်ပါတယ်။ပိုပြီးတော့ ရှင်းသွားအောင် ဥပမာလေးနဲ့ကြည့်လိုက်ရအောင်…။ဥပမာ မှာတော့ HTML လေးနဲ့ဘဲပြထားပါတယ်။
enum Email
{
Html,
PlainText,
Attachment
}
void SendMail (string message, Email email)
{
switch ( email )
{
case Email.Html:
// Code that Do something
break;
case Email.PlainText:
// Code that Do something
break;
case Email.Attachment:
// Code that Do something
break;
default:
// Code that Do something
break;
}
}
အဲ့ဒီလိုရေးထားရင်တော့ Coding Standard ကိုလိုက်နာထားတဲ့အတွက်ကြောင့် စံမှီတဲ့ ရေးနည်းဘဲဖြစ်ပါတယ်။
ဒါဆိုရင် စံ ကိုမလိုက်နာတဲ့ ပုံစံကတော့
void SendMail (string message, string email)
{
switch ( email )
{
case “Html”:
// Do something
break;
case “PlainText”:
// Do something
break;
case “Attachment”:
// Do something
break;
default:
// Do something
break;
}
}
12. Member Variables တွေကို ကြေညာမယ်ဆိုရင်လည်း public နဲ့ protected နဲ့မကြေညာသင့်ပါဘူး။ကြေညာမယ်ဆိုရင်တော့ OOP Rules ရဲ့ စံအရ Private နဲ့ဘဲကြေညာသင့်ပါတယ်…။ပြီးတော့မှ public Property ကိုသုံးပြီးတော့ပြောင်းလဲသင့်ပါတယ်။
13. Event Handler method ထဲမှာ Required Action ကိုဆောင်ရွက်တဲ့ Code တွေမပါသင့်ပါဘူး။နောက်ပြီးတော့ ကိုယ်ရေးထားတဲ့ Event Handler Method ကနေနောက်ထပ် method တစ်ခုကိုခေါ်တာမျိုးတွေကိုပြုလုပ်သင့်ပါတယ်။ Method တစ်ခုထဲမှာဘဲ အားလုံးမရေးဘဲနဲ့သီးခြား Method တွေကို တစ်ခုချင်းခေါ်သုံးတာမျိုးတွေ ပြုလုပ်ခြင်းကိုဆိုလိုတာဖြစ်ပါတယ်။
14. မိမိရေးသားနေတဲ့ Code ထဲမှာပါတဲ့ Path လမ်းကြောင်းတွေကိုပေးတဲ့အခါမှာလည်း Hardcode တွေကိုသုံးပြီးတော့မပေးပါနဲ့။နောက်ပြီးတော့ Drive Name တွေကိုလည်း HardCode မပေးပါနဲ့။
Application Path တွေကို Relative Path နဲ့ Programmatically ဘဲပေးပါ။
15. ကိုယ်ရေးထားတဲ့ Code တွေက Hardcode ဖြစ်နေရင် အခက်အခဲကြုံနိုင်ပါတယ်။ဘယ်လိုမျိုးလဲဆိုတော့ ကိုယ်က Drive D: ထဲမှာ Data တွေသွားသိမ်းအောင် Hardcode နဲ့ရေးထားပါတယ်။ထို့ကဲ့သို့ပြုလုပ်ခြင်းမျိုးကိုရှောင်ပါ။ဘာဖြစ်လို့လဲဆိုတော့ ကိုယ့်စက်မှာကတော့ D: ထဲမှာသွားသိမ်းလို့ရပေမဲ့ တခြားသူများစက်မှာ D: မရှိဘဲနဲ့ A: , B: , Z: တို့စသည်ဖြင့်ရှိလာတဲ့အခါမှာ Error တက်လာနိုင်တဲ့အတွက်ကြောင့် ရှောင်ကြဉ်ရပါမယ်။
16. ကိုယ်ရေးထားတဲ့ Application ကိုစမ Run ခင်မှာ ကိုယ်ရေးထားတဲ့ Application ကို Run နိုင်မဲ့ Drive Location မှာ ကိုယ်ရေးထားတဲ့ Application အလုပ်လုပ်စေနိုင်ဖို့အတွက် ဖိုင်တွေရှိမရှိကို ဦးစွာ စစ်တဲ့ Code တွေကိုရေးသားထားဖို့လိုပါတယ်။ဥပမာအနေနဲ့ပြောရရင် Database နဲ့ချိတ်ဆက်တဲ့ Code တွေပါခဲ့ရင် အရင်ဆုံးဦး ကျွန်တော်တို့သုံးမဲ့ Database Connetion ရှိမရှိ…အလုပ် လုပ်…မလုပ် စသဖြင့်စစ်တဲ့ Code တွေကိုထည့်ထားဖို့လိုပါလိမ့်မယ်။
အကယ်၍ Problem (Error) တက်ခဲ့တယ်ဆိုရင်လည်း အသုံးပြုသူ User ကို Message Box လိုမျိုးရိုက်မပြဘဲနဲ့…ခင်မင်ရင်းနှီးတဲ့ စကားလုံးတွေနဲ့ Error တက်နေကြောင်းကိုပြသသင့်ပါတယ်။
ဘာဖြစ်လို့ Message Box ကမကောင်းရသလဲဆိုတော့ လေ့လာတွေ့ရှိချက်များအရ Message Box ဖြင့်ပြ ခြင်းက User ကိုအထိတ်တလန့်ဖြစ်စေတယ်လို့ဆိုထားပါတယ်။ဥပမာ.. သုံးနေတုန်း (ဒုန်) ဆိုပြီးတော့ တက်လာရင် User ကအထိတ်တလန့်ဖြစ်စေတဲ့အပြင် စိတ်ပျက်သွားနိုင်တဲ့အတွက်ကြောင့် Label လေးကို အရောင်လေးနဲ့ဖြစ်စေ… ဘေးမှာ အရောင်လေးနဲ့ဖြစ်စေ ယဉ်ကျေးစွာ ရေးသား အသိပေးသင့်ပါတယ်ခင်ဗျာ။
ဆုံးသည်အထိဖတ်ပေးသောကြောင့် ကျေးဇူးတင်ပါတယ်…။
ဆက်ပါဦးမည်….။
Facebook comments:



I always read your all post but I haven’t my words to thank you . so sorry… All your post is good for beginners like me…
Thanks a lot… Be Great!……..
Junemoe
I’m glad to know you read all of my post . So Thanks to you..
No need to sorry to me because my good-will is for all of our readers…
Zawmin
nice work bro !!! i like ur post
check pls ~ something is wrong in tolower==”Hello”
Thank a lot