تبلیغات
NiceSoft - چگونه کد بهتری بنویسیم (روشهای بهینه و استاندارد کد نویسی) قسمت اول

چگونه کد بهتری بنویسیم (روشهای بهینه و استاندارد کد نویسی) قسمت اول

تاریخ:یکشنبه 30 آبان 1389-08:53 ق.ظ

مقدمه

 متاسفانه معمولا" اکثر برنامه نویسان ( خصوصا" در کشور ما ) در پی نوشتن کدهای هستند که تنها قابلیت اجرا داشته باشند و  تصور بر این است که بدین ترتیب در حداقل زمان ممکن  میتوان به نتیجه مطلوب رسید. درصورتیکه نوشتن کدهای  بهینه و استاندارد گر چه ممکن است کمی سربار اولیه در هنگام پیاده سازی داشته باشند ولی نهایتا" منجر به صرف زمان و هزینه بسیار کمتری نسبت به کدهای غیر استاندارد جهت رفع خطاهای احتمالی ، نگهداری و توسعه خواهند داشت.

با توجه به اهمیت این مسئله در این مقاله به مواردی در مورد کد نویسی بهینه واستاندارد در C#.NET  اشاره میگردد که البته بسادگی قابل تعمیم در تمام محیط ها و زبانهای برنامه سازی خواهند بود.

نکات و روشهای نوشتن کدهای بهتر

 1-     استفاده از روشهای نام گذاری استاندارد.

 روش Pascal : در این روش اولین حرف هر کلمه بزرگ بوده و سایر حروف کوچک میباشند.

روش Camel : در این روش حروف اول تمام کلمات بغیر از کلمه اول بزرگ میباشند.

 در روش استاندارد همواره برای نام گذاری کلاسها و متدها از روش Pascal و برای نام گذاری متغیرها و پارامترها از روش Camel استفاده میگردد.

 مثال 1 – استفاده از روش Pascal در نام گذاری نام کلاس و متد.

 public class HelloWorld

{

  void SayHello(string name)

  {

    ...

  }

}

مثال 2 – استفاده از روش Camel جهت نام گذاری متغیرها و پارامترها.

 

public class HelloWorld
{
 int totalCount = 0;
 void SayHello(string name)
 {
  string fullMessage = "Hello " + name;
  ...
 }
}

توجه ! بسیاری از برنامه نویسان علاقه به استفاده از _ در نام گذاری متغیرهایشان دارند.

مثال :     string m_name;

استفاده از این روش اکیدا" توصیه نمی گردد و همانگونه که گفته شد تمام متغیرها باید با استفاده از روش Camel نام گذاری گردند.

2-     همواره جهت نام گذاری از کلمات توصیفی گویا استفاده نمائید. مثلا" بجای استفاده از nam ، addr ، sal از نام های name ، address ، salary  استفاده نمائید.

3-     هیچگاه از حروف تک بعنوان متغیر استفاده نکنید مثلا" بجای استفاده از i و t از نامهای index و temp استفاده کنید. تنها در مواردی که می خواهید از این متغیرها بعنوان شمارشگر حلقه البته آن هم در صورتیکه در متن حلقه از آن متغیر ها استفاده نکرده باشید میتوان از حروف تکی برای نام گذاری متغیرها استفاده نمائید.

 

for ( int i = 0; i < count; i++ )

{

 ...

}

4-     نام فایل برنامه باید با نام کلاس اصلی برنامه یکی باشد. برای مثال نام فایلی با نام کلاس HelloWorld باید حتما" HelloWorld.cs (و یا HelloWorld.vb) باشد.

5-     جهت بالا بردن هر چه بیشتر خوانایی کدها را بصورت دندانه دار بنویسید.

مثلا" نمونه کد زیر را

bool SayHello (string name)

{

  string fullMessage = "Hello " + name;

  DateTime currentTime = DateTime.Now;

  string message = fullMessage + ", the time is : " +

                  currentTime.ToShortTimeString();

  MessageBox.Show ( message );

  if ( ... )

  {

  // Do something

  // ...

  return false;

  }

  return true;

}

به این صورت دندانه دار بنویسیم ، همانگونه که ملاحظه میگردد نمونه کد زیر از خوانایی بیشتری برخوردار میباشد..

 

bool SayHello (string name)

{

    string fullMessage = "Hello " + name;

    DateTime currentTime = DateTime.Now;

    string message = fullMessage + ", the time is : " +

                  currentTime.ToShortTimeString();

    MessageBox.Show ( message );

 

    if ( ... )

    {

      // Do something

      // ...

      return false;

    }

 

    return true;

}

6-     برای ایجاد فاصله و دندانه دار کردن کد از TAB بجای SPACE (جای خالی) استفاده کنید.

 

7-     برای خوانا تر شدن هر چه بیشتر کد اولا" آکولادهای مشخص کننده یک بلوک را در راستای هم قرار دهید به مثال زیر توجه کنید..

 

      کد ناخوانا :

              

  if ( ... ) {

   // Do something

  }

 

      کد خوانا :

 

  if ( ... ) 

  {

   // Do something

  }

 

ثانیا" بین عملوندها و متغیرها و پرانتزها از یک جای خالی استفاده نمائید.

مثال :

کد نا خوانا :

  if(showResult==true)

  {

   for(int i= 0;i<10;i++)

   {

    //

   }

 }

      کد خوانا :

 

  if ( showResult == true )

  {

   for ( int i = 0; i < 10; i++ )

   {

    //

   }

  }

 

8-  از نوشتن کلاسهای (فایلهای)  با کد زیاد بپرهیزید . درصورتیکه تعداد خطوط کلاس(فایل کد ) شما از 400 خط تجاوز نمود آن را به کلاسها (فایلهای) کوچکتر تجزیه کنید. همچنین از نوشتن متدهای بزرگ نیز اکیدا" پرهیز کنید. یک متد نرمال بین 1 الی 25 خط کد باید داشته باشد. درصورتیکه تعداد خطوط یک متد بیش از 25 خط گردید باید آن را به چندین متد تجزیه نمود.نام متدها باید کاملا" گویا بوده و نشانگر عملی باشد که آن متد انجام میدهد . در اینصورت نیاز به نوشتن توضیحات اضافه در متن کد از بین میرود.

 کد نا خوانا و حجیم :

 

 // This method will save the phone number.
 void SaveData ( string phoneNumber )
 {
  // Save the phone number.
 }

      کد خوانا :

 

void SavePhoneNumber ( string phoneNumber )
{
  // Save the phone number.
}
 

9-     هر متد باید تنها یک وظیفه را انجام دهد هر چند که کوچک باشد . از نوشتن یک متد جهت انجام چندین وظیفه جدا" خودداری کنید.

 

کد بد :

 

 // Save address and send an email to the supervisor

 // to inform that the address is updated.

 SaveAddress ( address, email );

 void SaveAddress ( string address, string email )

 {

  // Job 1.

  // Save the address.

  // ...

  // Job 2.

  // Send an email to inform the supervisor that the address is

     changed.

  // ...

}

      کد خوب :

 

 // Save the address.

 SaveAddress (  address );

 

 // Send an email to the supervisor to inform that the address is

    updated.

 SendEmail ( address, email );  

 

 void SaveAddress ( string address )

 {

  // Save the address.

  // ...

 }

 

 void SendEmail ( string address, string email )

 {

  // Send an email to inform the supervisor that the address is

     changed.

  // ...

 }

 

 10- همواره بجای نوشتن مستقیم اعداد در کد برنامه از مقادیر ثابت استفاده کنید و همچنین مقادیر رشته ای عمومی را در یک فایل ضمیمه قرار داده و هیچگاه آنها را مستقیما" در کد اصلی مقدار دهی نکنید.

 

ادامه دارد قسمت دوم



viagra Kopen maastricht
شنبه 16 تیر 1397 07:44 ق.ظ
Oh my goodness! Impressive article dude! Мany thanks, Howeveer Ι am going tһrough troubles
ѡith yоur RSS. I don't know ᴡhy I can't
join it. Is tһere аnybody else getting sіmilar
RSS issues? Αnyone who knows thhe ansswer cɑn ʏօu kindly respond?
Ƭhanks!!
Stone Jana
سه شنبه 12 تیر 1397 02:47 ق.ظ
Ԝhat's up, I log oon to your new stuf ᧐n a regular basis.
Үоur writing style іs witty, кeep it up!
hadley
شنبه 9 تیر 1397 11:03 ق.ظ
Great post. I am dealing with some of tһeѕe issues as ѡell..
Ernie
دوشنبه 28 خرداد 1397 07:12 ب.ظ
It's enormous that yοu are gеtting ideas from this article as well aѕ from oᥙr discussion mɑde
here.
Janie
دوشنبه 24 اردیبهشت 1397 10:21 ق.ظ
Spot on with this write-up, I really believe this site needs far mor attention. I'll probably be returning to
read through more, thanks for the advice!
eyelash
پنجشنبه 20 اردیبهشت 1397 02:54 ق.ظ
Good day! This is kind of off topic but I need some guidance from an established blog.
Is it difficult to set up your owwn blog? I'm noot very teechincal but I can figure
things out pretty fast. I'm thinking aboyt setting up my own but I'm not sure where to
begin. Do you have any ideas oor suggestions? Cheers
Hassan
دوشنبه 3 اردیبهشت 1397 07:20 ب.ظ
Hi I am so grayeful I found your site, I really found you bby accident, while I was looking on Bing for something else, Anythow I am here now annd
would just like tto sayy many thanks forr a incredible pist and a all round exciting bkog (I also lofe the theme/design),
I don’t have time to read thyrough iit all aat the minute
bbut I hace bookmarked it annd also adderd your RSS feeds,
so when I have ttime I will be back too read a greazt desal more, Plwase do keep uup the geeat b.
depforce review
جمعه 31 فروردین 1397 07:49 ب.ظ
Excellent sute yoou hav ggot here.. It's har too finbd hugh qualikty writing
likke your thdse days. I serioously apprecciate individals liie you!
Takke care!!
Amir Ali
یکشنبه 26 فروردین 1397 10:58 ق.ظ
Howdy! Ꭰо үou know іf they maкe any plugins to safeguard ɑgainst
hackers? Ӏ'm kinda paranoid about losing everything Ӏ'vе
worked һard on. Any suggestions?
getroman
جمعه 24 فروردین 1397 02:41 ق.ظ
Uѕeful informatiⲟn. Fortunate mе I discovered youг site by chance, and I аm stunned
wһy tһіs accident didn't happeneԁ earlier!
I bookmarked іt.
viagra (sildenafil) super active 100mg
پنجشنبه 23 فروردین 1397 10:56 ق.ظ
Ι do not know wһether іt's just me or іf еverybody else experiencing рroblems witһ your site.
It appears as if sоme of tһе text in your content aге running off tһе screen. Can someone else please comment and ⅼet me know if this iѕ happening
t᧐ them toο? Ꭲhis maʏ Ƅe a issue with mу browser Ьecause Ӏ'ѵе һad this happen Ьefore.
Kudos
Cialis pills
شنبه 18 فروردین 1397 09:38 ب.ظ

Amazing a lot of wonderful information.
can i take cialis and ecstasy cialis canada cialis patentablauf in deutschland cialis 05 cialis for daily use click here take cialis prescription doctor cialis cialis professional from usa enter site very cheap cialis cialis for sale
Aly johnson
شنبه 11 فروردین 1397 02:01 ب.ظ
This is really interesting, You are a very skilled blogger.
I've joined your feed and look ahead to in quest of extra
of your fantastic post. Also, I've shared your web site in my social networks
cheap lumigan canada
پنجشنبه 9 فروردین 1397 01:14 ب.ظ
You should take part in a contest for one of the greatest
websites on the web. I will recommend this site!
mezo
سه شنبه 7 فروردین 1397 09:46 ق.ظ
Thankfulness to my father ѡһo informed me οn thе
topic off tһis website, thіs weblog іs aϲtually remarkable.
Buy cialis
جمعه 3 فروردین 1397 12:03 ق.ظ

Kudos. Plenty of forum posts.

5 mg cialis coupon printable cialis 20mg prix en pharmacie generic cialis in vietnam generic cialis soft gels brand cialis nl cialis reviews acheter cialis meilleur pri cialis canada on line buy cialis uk no prescription cialis uk next day
cam4 token generator v5.5 password
دوشنبه 16 بهمن 1396 06:08 ب.ظ
من بسیاری از مقالات در مورد دوستداران وبلاگ نویس را خوانده ام اما این پست است
در حقیقت یک پست دلسوز، آن را حفظ کنید.
Katja
جمعه 17 آذر 1396 09:08 ق.ظ
Great info. Lucky me I ran across your blog by chance (stumbleupon).
I have book marked it for later!
How long does it take to recover from Achilles injury?
چهارشنبه 8 شهریور 1396 03:24 ق.ظ
Hmm it looks like your blog ate my first comment (it was extremely long) so I guess I'll just sum it up what I wrote
and say, I'm thoroughly enjoying your blog.

I as well am an aspiring blog blogger but I'm still new to everything.

Do you have any suggestions for first-time blog writers?
I'd certainly appreciate it.
Foot Pain
سه شنبه 17 مرداد 1396 04:37 ق.ظ
You really make it appear so easy with your presentation but
I in finding this topic to be actually something which I think I'd never understand.

It seems too complex and very large for me. I'm taking a look forward in your subsequent submit, I will try to get the hold
of it!
خشایار
یکشنبه 30 آبان 1389 11:11 ق.ظ
با تشکر از جناب نصیری و اقدم به مطالب تکمیلی بسیار مفیدی اشاره کردید
علی اقدم
یکشنبه 30 آبان 1389 10:09 ق.ظ
ممنون،برای نوشتن کد خوب می بایست از یک قاعده و اصل در نامگذاری پیروی کنید که با جستجو های که من کردم و اصول و قراردادهای نامگذاری در دات نت را حدودا یکجا جمع کردم که خیلی میتونه مفید باشه

http://www.aliaghdam.ir/2010/08/net_07.html
وحید
یکشنبه 30 آبان 1389 09:47 ق.ظ
ممنون. دانستن این موارد خیلی خوب است اما نیاز به ابزار برای یادآوری دارد كه این مطلب می‌تواند مفید باشد:
http://vahidnasiri.blogspot.com/2008/11/visual-studionet.html
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر