<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C# 編碼規(guī)范和編程好習(xí)慣

      C# 編碼規(guī)范和編程好習(xí)慣

            誰都會(huì)寫代碼!幾個(gè)月的編程經(jīng)驗(yàn)可以讓你寫出“可運(yùn)行應(yīng)用程序”。讓它可運(yùn)行容易,但是以最有效率的方式編碼就需要下更多的功夫!

      要知道,大多數(shù)程序員在寫”可運(yùn)行代碼,“而不是”高效代碼“。我們?cè)谶@個(gè)指南課程前面提到,你想成為你們公司”最尊貴的專業(yè)人員“嗎?寫”高效代碼“是一項(xiàng)藝術(shù),你必須學(xué)習(xí)和實(shí)踐它。

      命名慣例和規(guī)范



      注記 :
      Pascal 大小寫形式-所有單詞第一個(gè)字母大寫,其他字母小寫。
      Camel   大小寫形式-除了第一個(gè)單詞,所有單詞第一個(gè)字母大寫,其他字母小寫。

    3. 類名使用Pascal 大小寫形式
      public class HelloWorld{ ...}

    4. 方法使用Pascal 大小寫形式
      public class HelloWorld{ void SayHello(string name) {  ... }}

    5. 變量和方法參數(shù)使用Camel 大小寫形式


      public class HelloWorld{ int totalCount = 0; void SayHello(string name) {  string fullMessage = "Hello " + name;  ... }}  
    6. 不要使用匈牙利方法來命名變量

      以前,多數(shù)程序員喜歡它-把數(shù)據(jù)類型作為變量名的前綴而m_作為成員變量的前綴。例如:
      string m_sName;int nAge;    
      然而,這種方式在.NET編碼規(guī)范中是不推薦的。所有變量都用camel 大小寫形式,而不是用數(shù)據(jù)類型和m_來作前綴。
    7. 用有意義的,描述性的詞語來命名變量

      - 別用縮寫。用name, address, salary等代替 nam, addr, sal
      - 別使用單個(gè)字母的變量象i, n, x 等. 使用 index, temp
      用于循環(huán)迭代的變量例外:
      for ( int i = 0; i < count; i++ ){ ...}
      如果變量只用于迭代計(jì)數(shù),沒有在循環(huán)的其他地方出現(xiàn),許多人還是喜歡用單個(gè)字母的變量(i) ,而不是另外取名。
      - 變量名中不使用下劃線 (_) 。
      - 命名空間需按照標(biāo)準(zhǔn)的模式命名
      ...

    8. 文件名要和類名匹配

      例如,對(duì)于類HelloWorld, 相應(yīng)的文件名應(yīng)為 helloworld.cs (或, helloworld.vb)

      縮進(jìn)和間隔

    9. 縮進(jìn)用 TAB . 不用 SPACES.。
    10. 注釋需和代碼對(duì)齊.。
    11. 花括弧 ( {} ) 需和括號(hào)外的代碼對(duì)齊.。
    12. 用一個(gè)空行來分開代碼的邏輯分組。.
       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; }
    13. 在一個(gè)類中,各個(gè)方法需用一空行,也只能是一行分開。
    14. 花括弧需獨(dú)立一行,而不象if, for 等可以跟括號(hào)在同一行。.
      好:
        if ( ... )   {   // Do something  }
      不好:
        if ( ... ) {   // Do something  }
    15. 在每個(gè)運(yùn)算符和括號(hào)的前后都空一格。.

      好:
        if ( showResult == true )  {   for ( int i = 0; i < 10; i++ )   {    //   }  }
      不好:
        if(showResult==true)  {   for(int i= 0;i<10;i++)   {    //   }  }

      良好的編程習(xí)慣


      遵從以下良好的習(xí)慣以寫出好程序

    16. 避免使用大文件。如果一個(gè)文件里的代碼超過300~400行,必須考慮將代碼分開到不同類中。
    17. 避免寫太長(zhǎng)的方法。一個(gè)典型的方法代碼在1~25行之間。如果一個(gè)方法發(fā)代碼超過25行,應(yīng)該考慮將其分解為不同的方法。
    18. 方法名需能看出它作什么。別使用會(huì)引起誤解的名字。如果名字一目了然,就無需用文檔來解釋方法的功能了。

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

      不好:
       // This method will save the phone number. void SaveData ( string phoneNumber ) {  // Save the phone number. }
    19. 一個(gè)方法只完成一個(gè)任務(wù)。不要把多個(gè)任務(wù)組合到一個(gè)方法中,即使那些任務(wù)非常小。

      好:
       // 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.  // ... }

      不好:
       // 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.  // ... }
    20. 使用C# 或 VB.NET的特有類型,而不是System命名空間中定義的別名類型。

      好:
       int age; string name; object contactInfo;

      不好:
       Int16 age; String name; Object contactInfo; 
    21. 別在程序中使用固定數(shù)值,用常量代替。
    22. 別用字符串常數(shù)。用資源文件。
    23. 避免使用很多成員變量。聲明局部變量,并傳遞給方法。不要在方法間共享成員變量。如果在幾個(gè)方法間共享一個(gè)成員變量,那就很難知道是哪個(gè)方法在什么時(shí)候修改了它的值。
    24. 必要時(shí)使用enum 。別用數(shù)字或字符串來指示離散值。
      好:
       enum MailType {  Html,  PlainText,  Attachment } void SendMail (string message, MailType mailType) {  switch ( mailType )  {   case MailType.Html:    // Do something    break;   case MailType.PlainText:    // Do something    break;   case MailType.Attachment:    // Do something    break;   default:    // Do something    break;  } }            


      不好:
       void SendMail (string message, string mailType) {  switch ( mailType )  {   case "Html":    // Do something    break;   case "PlainText":    // Do something    break;   case "Attachment":    // Do something    break;   default:    // Do something    break;  } }
    25. 別把成員變量聲明為 public 或 protected。都聲明為 private 而使用 public/protected 的Properties.
    26. 不在代碼中使用具體的路徑和驅(qū)動(dòng)器名。 使用相對(duì)路徑,并使路徑可編程。
    27. 永遠(yuǎn)別設(shè)想你的代碼是在“C:”盤運(yùn)行。你不會(huì)知道,一些用戶在網(wǎng)絡(luò)或“Z:”盤運(yùn)行程序。
    28. 應(yīng)用程序啟動(dòng)時(shí)作些“自檢”并確保所需文件和附件在指定的位置。必要時(shí)檢查數(shù)據(jù)庫連接。出現(xiàn)任何問題給用戶一個(gè)友好的提示。
    29. 如果需要的配置文件找不到,應(yīng)用程序需能自己創(chuàng)建使用默認(rèn)值的一份。
    30. 如果在配置文件中發(fā)現(xiàn)錯(cuò)誤值,應(yīng)用程序要拋出錯(cuò)誤,給出提示消息告訴用戶正確值。
    31. 錯(cuò)誤消息需能幫助用戶解決問題。永遠(yuǎn)別用象"應(yīng)用程序出錯(cuò)", "發(fā)現(xiàn)一個(gè)錯(cuò)誤" 等錯(cuò)誤消息。而應(yīng)給出象 "更新數(shù)據(jù)庫失敗。請(qǐng)確保登陸id和密碼正確。" 的具體消息。  
    32. 顯示錯(cuò)誤消息時(shí),除了說哪里錯(cuò)了,還應(yīng)提示用戶如何解決問題。不要用 象 "更新數(shù)據(jù)庫失敗。"這樣的,要提示用戶怎么做:"更新數(shù)據(jù)庫失敗。請(qǐng)確保登陸id和密碼正確。"
    33. 顯示給用戶的消息要簡(jiǎn)短而友好。但要把所有可能的信息都記錄下來,以助診斷問題。

      注釋

    34. 別每行代碼,每個(gè)聲明的變量都做注釋。
    35. 需要的地方注釋。可讀性強(qiáng)的代碼需要很少的注釋。如果所有的變量和方法的命名都很有意義,會(huì)使代碼可讀性很強(qiáng)并無需太多注釋。
    36. 行數(shù)不多的注釋會(huì)使代碼看起來優(yōu)雅。但如果代碼不清晰,可讀性差,那就糟糕。
    37. 如果應(yīng)為某種原因使用了復(fù)雜艱澀的原理,為程序配備良好的文檔和重分的注釋。
    38. 對(duì)一個(gè)數(shù)值變量采用不是0,-1等的數(shù)值初始化,給出選擇該值的理由。
    39. 簡(jiǎn)言之,要寫清晰,可讀的代碼以致無須什么注釋就能理解。
    40. 對(duì)注釋做拼寫檢查,保證語法和標(biāo)點(diǎn)符號(hào)的正確使用。

      異常處理

    41. 不要“捕捉了異常卻什么也不做“。如果隱藏了一個(gè)異常,你將永遠(yuǎn)不知道異常到底發(fā)生了沒有。
    42. 發(fā)生異常時(shí),給出友好的消息給用戶,但要精確記錄錯(cuò)誤的所有可能細(xì)節(jié),包括發(fā)生的時(shí)間,和相關(guān)方法,類名等。
    43. 只捕捉特定的異常,而不是一般的異常。

      好:
       void ReadFromFile ( string fileName ) {  try  {   // read from file.  }  catch (FileIOException ex)  {   // log error.   //  re-throw exception depending on your case.   throw;  } }
      不好:
       void ReadFromFile ( string fileName ) {  try  {   // read from file.  }  catch (Exception ex)   {   // Catching general exception is bad... we will never know whether it   // was a file error or some other error.      // Here you are hiding an exception.    // In this case no one will ever know that an exception happened.   return "";    } }
    44. 不必在所有方法中捕捉一般異常。不管它,讓程序崩潰。這將幫助你在開發(fā)周期發(fā)現(xiàn)大多數(shù)的錯(cuò)誤。
    45. 你可以用應(yīng)用程序級(jí)(線程級(jí))錯(cuò)誤處理器處理所有一般的異常。遇到”以外的一般性錯(cuò)誤“時(shí),此錯(cuò)誤處理器應(yīng)該捕捉異常,給用戶提示消息,在應(yīng)用程序關(guān)閉或 用戶選擇”忽略并繼續(xù)“之前記錄錯(cuò)誤信息。
    46. 不必每個(gè)方法都用try-catch。當(dāng)特定的異常可能發(fā)生時(shí)才使用。比如,當(dāng)你寫文件時(shí),處理異常FileIOException.
    47. 別寫太大的 try-catch 模塊。如果需要,為每個(gè)執(zhí)行的任務(wù)編寫單獨(dú)的 try-catch 模塊。 這將幫你找出哪一段代碼產(chǎn)生異常,并給用戶發(fā)出特定的錯(cuò)誤消息
    48. 如果應(yīng)用程序需要,可以編寫自己的異常類。自定義異常不應(yīng)從基類SystemException派生,而要繼承于. IApplicationException
    49. posted @ 2008-09-04 23:01  .NET快速開發(fā)框架  閱讀(371)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产亚洲精品一区二区不卡| 国内精品自线在拍| 国产精品国语对白一区二区| 亚洲女人的天堂在线观看| 国产一码二码三码区别| 色猫咪av在线网址| 国产自产对白一区| 中文乱码字幕在线中文乱码| 久久久久国产精品熟女影院| 加勒比色综合久久久久久久久| 成人又黄又爽又色的视频 | 日本一区二区精品色超碰| 亚洲精品岛国片在线观看| 国产L精品国产亚洲区在线观看| 古田县| 日韩一区二区三在线观看| 精品无码久久久久久尤物| 国产成人片无码视频在线观看| 最新精品露脸国产在线| 精品粉嫩国产一区二区三区| 暖暖 在线 日本 免费 中文| 国产精品中文字幕二区| 欧美成人h亚洲综合在线观看| 欧美午夜成人片在线观看| 亚洲人成网网址在线看| 国产啪视频免费观看视频| 日本熟妇hdsex视频| 老师扒下内裤让我爽了一夜| 欧美日本一区二区视频在线观看| 国产做无码视频在线观看| 安国市| 国产老头多毛Gay老年男| 精品人妻日韩中文字幕| 芷江| 99精品国产一区二区三区不卡 | 狠狠综合久久久久综| 欧美精品国产综合久久| 国产精品伦理一区二区三| 男人av无码天堂| 日韩精品亚洲精品第一页| 久久精品国产亚洲av品|