C# Coding Standards Part(5)
Good Programming Practices
Good Programming Practices ဆိုတာကတော့ Program တစ်ပုဒ်ရေးသားတဲ့အခါမှာဘယ်လိုရေးသင့်တယ်…ဘယ်လိုနေရာထားသင့်တယ်…စသည်ဖြင့်အမျိုးမျိုး
လေ့လာကြမဲ့အပိုင်းဖြစ်ပါတယ်။
1. Method ထဲမှာ Code တွေအများကြီးရေးသားခြင်းကိုရှောင်ကြဉ်ပါ။
Method တစ်ခုထဲမှာ Coding Line အရေအတွက်က 1~25 အထိဘဲရှိသင့်ပါတယ်။လိုင်းအရေအတွက်ကိုဆိုလိုတာပါ။စာလုံးအရေအတွက်မဟုတ်ပါဘူး။
အကယ်၍ မဖြစ်မနေ Method ထဲမှာလိုင်းအရေအတွက် 25 ထက်ပိုတော့မယ်ဆိုရင်တော့ ပိုတော့မယ့် လိုင်းကို နောက်ထပ် Method တစ်ခုခွဲရေးလိုက်ပါ။ဥပမာအနေနဲ့ပြောရရင်တော့
Private static void Main()
{
//Output အပါအ၀င် 25 ကြောင်းရေးပြီး…သို့ပေမဲ့ တစ်ကြောင်းရေးရန်ကျန်နေ
Output(name);
}
Private static void Output(string name)
{
Console.WriteLine(name);
}
ထိုကဲ့သို့ရေးရမှာဖြစ်ပါတယ်။အပေါ်က Method မှာ ၂၅ ကြောင်းပြည့်သွားတဲ့အတွက်ကြောင့် Output ထုတ်ချင်တဲ့အတွက်ကြောင့် ထပ်မရေးတော့ဘဲ နောက်ထပ် Method တစ်ခုကိုရေးလိုက်ပြီး Output ထုတ်လိုက်ခြင်းဖြစ်ပါတယ်။အလုပ်ရှုပ်တယ်လို့တော့မမြင်စေချင်ပါဘူး။
2.Method Name ပေးတော့မယ်ဆိုရင် ကိုယ်ပေးမဲ့ Method ကဘာလုပ်သလဲဆိုတာကိုအရင်ကြည့်ပြီးမှာပေးပါ။ဥပမာအနေနဲ့ပြောရရင် ကိုယ့်ရဲ့ Method ထဲမှာရေးထားတဲ့ အကြောင်းအရာက Phone Number ကို Save တဲ့ အကြောင်းကိုရေးထားတယ်ဆိုရင် ကိုယ်ပေးမဲ့ Method Name က သူနဲ့ကိုက်ညီတဲ့ Name ဘဲဖြစ်သင့်ပါတယ်။
SavePhoneNumber ဆိုပြီးတော့ဘဲဖြစ်သင့်ပါတယ်။ပိုရှင်းသွားအောင် ဥပမာလေးနဲ့ကြည့်လိုက်ရအောင်။
Private void SavePhoneNumber(int number)
{
// SavePhoneNumber Code
}
အဲ့ဒီလိုရေးရင်မှန်ပါတယ်။Method ထဲမှာရှိတဲ့ Code တွေက Phone No ကို Save လုပ်တဲ့ Code တွေဆိုတော့ သူ့ရဲ့ Method Name ကို SavePhoneNumber လို့ပေးလိုက်တဲ့အတွက်ကြောင့် Method Name ကိုကြည့်ရုံနဲ့ သူ့အထဲက အကြောင်းအရာတွေကို ထင်ထင်ရှားရှား သိနိုင်ပါတယ်။
ဒါကြောင့် Method Name ကို အဆင်ပြေသလိုမပေးဘဲ…စနစ်တကျပေးတတ်ဖို့လိုပါတယ်။
3. Method တစ်ခုထဲမှာ Coding Standard အရ အလုပ်တစ်ခုဘဲလုပ်သင့်ပါတယ်။ဘယ်လိုလဲဆိုတော့ ကိုယ်ရေးထားတဲ့ Method က Phone No Save တဲ့အလုပ်ကိုလုပ်တယ်ဆိုရင် Phone No Save တဲ့အလုပ်တစ်ခုထဲကို ဘဲရေးထားသင့်ပါတယ်။
အဲ့ဒီအထဲမှာ Email Send လုပ်တဲ့ Code တွေကိုမရေးထားသင့်ပါဘူး။Email Send လုပ်တဲ့အလုပ် တောင်မဟုတ်ပါဘူး…။အလုပ်သေးသေးလေးဆိုရင်တောင် မလုပ်သင့်ပါဘူး…။
ပိုရှင်းသွားအောင် ဥပမာလေးနဲ့ကြည့်လိုက်ရအောင်။
string phonenumber;
string email;
SavePhoneNo(phonenumber);
SendEmail(email);
Private void SavePhoneNo(string no)
{
// Code that save PhoneNumber
}
Private void SendEmail(string mail)
{
// Code that send Email
}
အဲ့ဒီလိုရေးထားရင် စံ ကိုလိုက်နာထားပါတယ်။ဘာဖြစ်လိုလဲဆိုတော့ Method တစ်ခုက အလုပ်တစ်ခုဘဲလုပ်တဲ့အတွက်ကြောင့် ဖြစ်ပါတယ်။
ဒါဆိုရင် အမှားလေးကိုဆက်ကြည့်လိုက်ရအောင်။
String phonenumber;
String email;
SaveNo(phonenumber,email);
Private void SaveNo(string no,string mail)
{
// Code that save PhoneNumber and Send Email
two jobs in one method (that’s wrong)
}
အလုပ်နှစ်ခုကို Method တစ်ခုထဲမှာပေါင်းလုပ်ထားတဲ့အတွက်ကြောင့် ထိုသို့ပြုလုပ်ခြင်းက Coding Standard ကိုမလိုက်နာတဲ့အတွက်ကြောင့် စံမှီတဲ့ရေးသားနည်းလို့မဆိုနိုင်ပါဘူး။
Declare Data Type with Standards
4.ဒါကလည်းအထွေအထူးပြောစရာတော့မလိုဘူးလို့ထင်ပါတယ်။ဘာဖြစ်လို့လဲဆိုတော့ Programmer အများစုကြေညာနေကြတဲ့ ပုံစံက များသောအားဖြင့်မှန်လို့ပါ။ကျွန်တော်တို့ Data Type တွေကိုကြေညာတဲ့အခါမှာ ဒီလိုလေးကြေညာကြပါတယ်။
int count;
int age;
string name;
object mytype;
ဆိုပြီးတော့ကြေညာခဲ့ကြပါတယ်။အဲ့ဒီလိုကြေညာခဲ့ရင်တော့ Coding Standard ကိုလိုက်နာပါတယ်။
Int32,String,Object စသဖြင့်မကြေညာသင့်ပါဘူး။
5.နောက်တစ်ခုကတော့ မထင်မှတ်ထားတဲ့ တန်ဖိုးတွေကို အမြဲသတိထားသင့်ပါတယ်။ဥပမာအနေနဲ့ပြောရမယ်ဆိုရင်တော့ တန်ဖိုးနှစ်ခုလက်ခံတဲ့ Parameter နှစ်ခု ကိုသုံးနေပါတယ်။အဲ့ဒီလိုသုံးနေတဲ့အခါမှာ ကိုယ်ရေးထားတဲ့ Code တွေထဲကို ၀င်လာတဲ့ တန်ဖိုးနှစ်ခုမှာ ကိုယ်ထင်ထားသလို တန်ဖိုးဘဲ၀င်နေမယ်လို့မျှော်လင့်နေပါတယ်။ ဘယ်လိုလဲဆိုတော့ ကိုယ်က ပထမ Parameter အတွက် ၁ နဲ့ ဒုတိယ Parameter အတွက် ၂ ဆိုပြီးတော့ မျှော်လင့်ထားပါတယ်။ပြောရရင် ကိုယ်ရေးထားတဲ့ Code တွေထဲကို မည်သည့် ကိန်းဂဏန်းမဆို၀င်လာလို့ရပါတယ်။
ကိုယ်ကအဲ့ဒီလိုထင်ပါတယ်။အဲ့ဒီလိုထင်နေတဲ့အချိန်မှာ အသုံးပြုသူ User ကမသိဘဲနဲ့ ကိန်းမထည့်ဘဲ စာသား (Character) ထည့်လိုက်တဲ့အခါမှာ ကိုယ်ရေးထားတာက ကိန်းအတွက်ဆိုတော့ Error ထတက်ပါတယ်။ Error တက်တာက အကြောင်းတော့မဟုတ်ပါဘူး။Error တက်ပြီးတော့ Program ပိတ်သွားတာမျိုးဖြစ်နိုင်ပါတယ်။ဒါဆိုရင် Program ထဲမှာကိုယ်လုပ်ထားတဲ့ အရာတွေက ပျောက်သွားနိုင်တဲ့အတွက် အသုံးပြုသူ User ကအဆင်မပြေဖြစ်နိုင်ပါတယ်။
အထက်ပါဖော်ပြချက်တွေကြောင့် သတိထားသင့်ပါတယ်။Coding Standard အရ အထက်ဖော်ပြချက်အတိုင်းမဖြစ်စေရန်အတွက် လိုက်နာရမဲ့ အချက်လေးတွေကိုဖော်ပြပေးထားပါတယ်။
ပိုပြီးရှင်းသွားအောင် ကျွန်တော်တို့ ဥပမာလေးနဲ့လေ့လာကြည့်လိုက်ရအောင်ဗျာ…။
အောက်က ဥပမာလေးကတော့ Coding Standard အရလုပ်ဆောင်သင့်တဲ့အချက်ဘဲဖြစ်ပါတယ်။
If ( MemberType == eMemberTypes.Registered )
{
// Code that do something for Registered Users
}
Else if ( MemberType == eMemberTypes.Guest )
{
// Code that do something for Guest Users
}
Else
{
// Error Throw and handling that Error
ဤသို့ပြုလုပ်ခြင်းကြောင့် ဘာကြောင့် Error တက်သလဲဆိုတာကိုအလွယ်တကူသိနိုင်သလို နောင်တစ်ချိန်မှာ User အသစ်တွေကို ပြုလုပ်ခဲ့အခါမှာတက်နိုင်တဲ့ Error တွေကိုလည်းအလွယ်တကူ ရှာဖွေတွေ့ရှိနိုင်ပါတယ်။
}
အဲ့ဒီလိုရေးရင်လည်းရပါတယ်။ဒါမှမဟုတ် Error Handling လုပ်တဲ့ try Block တို့ catch Block နဲ့လုပ်ရင် Coding Standard ကိုလိုက်နာတာဖြစ်ပါတယ်။
ဒါဆိုရင် ဘယ်လိုရေးရင်မလိုက်နာဘူးလည်းဆိုတာကိုပါလေ့လာကြည့်လိုက်ရအောင်။
If ( MemberType == eMemberTypes.Registered )
{
// Code that do something for Registered Users
}
Else
{
// Code that do something for Guest users and Unkown users
ဤသို့ပြုလုပ်ချင်းကြောင့် Error တက်ခဲ့အခါမှာ Handle ပြုလုပ်ရမလွယ်သလို နောင်တစ်ချိန်မှာ User အသစ်တွေကို ပြုလုပ်ခဲ့အခါမှာတက်နိုင်တဲ့ Error တွေကိုလည်းအလွယ်တကူ ရှာဖွေတွေ့ရှိနိုင်မှာမဟုတ်ပါဘူး။
}
အထက်ပါအတိုင်းရေးထားခြင်းကြောင့် Error တက်တဲ့အခါမျိုးမှာ အမှားရှာရင် လွယ်လွယ်ကူကူရှာတွေ့နိုင်မှာမဟုတ်ပါဘူး။
ဆုံးသည်အထိဖတ်ပေးသောကြောင့်ကျေးဇူးတင်ပါတယ်။
ဆက်ပါဦးမည်…။
Facebook comments:



လာရောက်မှတ်သားသွားပါတယ်အကိုရေ ကျေးဇူးပါ
ဟုတ်ကဲ့ ကျေးဇူးတင်ပါတယ် အစ်ကို…
Good Ideas!!!! So, Thanks a lot . And later ,Please write a lot as this post!
ဟုတ်ကဲ့ ကျေးဇူးတင်ပါတယ်ခင်ဗျာ…စာဖတ်သူ….အားပေးသူ ရှိရင် ကျွန်တော်တို့စာရေးပေးရကျိုးနပ်ပါတယ်….ဆက်ရေးပေးမှာပါခင်ဗျာ…။
Bro /
Nice sharing One . I think “C# coding standards” posts which combine to do as a E-Book to study offline for our younger . Keep it up .
Thanks for your suggestion.You right.
When all of my posts (C# Coding Standards) are finished , i promise that i’ll make Adobe PDF File for our readers.
Thanks you again..