亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 編程修養(yǎng)(四).txt

?? 《編程修養(yǎng)》對C/C++初學(xué)者是一個(gè)良好的習(xí)慣典范
?? TXT
字號(hào):
11、出錯(cuò)信息的處理 
————————— 
你會(huì)處理出錯(cuò)信息嗎?哦,它并不是簡單的輸出。看下面的示例: 
  
    if ( p == NULL ){ 
        printf ( "ERR: The pointer is NULL\n" ); 
    } 
  
告別學(xué)生時(shí)代的編程吧。這種編程很不利于維護(hù)和管理,出錯(cuò)信息或是提示信息,應(yīng)該統(tǒng) 
一處理,而不是像上面這樣,寫成一個(gè)“硬編碼”。第10條對這方面的處理做了一部分說 
明。如果要管理錯(cuò)誤信息,那就要有以下的處理: 
  
    /* 聲明出錯(cuò)代碼 */ 
    #define     ERR_NO_ERROR    0  /* No error                 */ 
    #define     ERR_OPEN_FILE   1  /* Open file error          */ 
    #define     ERR_SEND_MESG   2  /* sending a message error  */ 

    #define     ERR_BAD_ARGS    3  /* Bad arguments            */ 
    #define     ERR_MEM_NONE    4  /* Memeroy is not enough    */ 
    #define     ERR_SERV_DOWN   5  /* Service down try later   */ 
    #define     ERR_UNKNOW_INFO 6  /* Unknow information       */ 
    #define     ERR_SOCKET_ERR  7  /* Socket operation failed  */ 
    #define     ERR_PERMISSION  8  /* Permission denied        */ 
    #define     ERR_BAD_FORMAT  9  /* Bad configuration file   */ 
    #define     ERR_TIME_OUT   10  /* Communication time out   */ 
  
    /* 聲明出錯(cuò)信息 */ 
    char* errmsg[] = { 
        /* 0 */       "No error", 
        /* 1 */       "Open file error", 
        /* 2 */       "Failed in sending/receiving a message", 
        /* 3 */       "Bad arguments", 
        /* 4 */       "Memeroy is not enough", 
        /* 5 */       "Service is down; try later", 
        /* 6 */       "Unknow information", 
        /* 7 */       "A socket operation has failed", 
        /* 8 */       "Permission denied", 
        /* 9 */       "Bad configuration file format", 
        /* 10 */      "Communication time out", 
        /* 10 */      "Communication time out", 
    }; 
  
    /* 聲明錯(cuò)誤代碼全局變量 */ 
    long errno = 0; 
  
    /* 打印出錯(cuò)信息函數(shù) */ 
    void perror( char* info) 
    { 
        if ( info ){ 
            printf("%s: %s\n", info, errmsg[errno] ); 
            return; 
        } 
  
        printf("Error: %s\n", errmsg[errno] ); 
    } 
  
這個(gè)基本上是ANSI的錯(cuò)誤處理實(shí)現(xiàn)細(xì)節(jié)了,于是當(dāng)你程序中有錯(cuò)誤時(shí)你就可以這樣處理: 
  
    bool CheckPermission( char* userName ) 
    { 
        if ( strcpy(userName, "root") != 0 ){ 
            errno = ERR_PERMISSION_DENIED; 

            return (FALSE); 
        } 
  
        ... 
    } 
  
    main() 
    { 
        ... 
        if (! CheckPermission( username ) ){ 
            perror("main()"); 
        } 
        ... 
    } 
  
一個(gè)即有共性,也有個(gè)性的錯(cuò)誤信息處理,這樣做有利同種錯(cuò)誤出一樣的信息,統(tǒng)一用戶 
界面,而不會(huì)因?yàn)槲募蜷_失敗,A程序員出一個(gè)信息,B程序員又出一個(gè)信息。而且這樣 
做,非常容易維護(hù)。代碼也易讀。 
  
當(dāng)然,物極必反,也沒有必要把所有的輸出都放到errmsg中,抽取比較重要的出錯(cuò)信息或 
是提示信息是其關(guān)鍵,但即使這樣,這也包括了大多數(shù)的信息。 
  
  
  
  
  
12、常用函數(shù)和循環(huán)語句中的被計(jì)算量 
————————————————— 
看一下下面這個(gè)例子: 
  
    for( i=0; i<1000; i++ ){ 
        GetLocalHostName( hostname ); 
        ... 
    } 
  
GetLocalHostName的意思是取得當(dāng)前計(jì)算機(jī)名,在循環(huán)體中,它會(huì)被調(diào)用1000次啊。這是 
多么的沒有效率的事啊。應(yīng)該把這個(gè)函數(shù)拿到循環(huán)體外,這樣只調(diào)用一次,效率得到了很 
大的提高。雖然,我們的編譯器會(huì)進(jìn)行優(yōu)化,會(huì)把循環(huán)體內(nèi)的不變的東西拿到循環(huán)外面, 
但是,你相信所有編譯器會(huì)知道哪些是不變的嗎?我覺得編譯器不可靠。最好還是自己動(dòng) 
手吧。 
  
同樣,對于常用函數(shù)中的不變量,如: 
  
GetLocalHostName(char* name) 
{ 
{ 
    char funcName[] = "GetLocalHostName"; 
  
    sys_log( "%s begin......", funcName ); 
    ... 
    sys_log( "%s end......", funcName ); 
} 
  
如果這是一個(gè)經(jīng)常調(diào)用的函數(shù),每次調(diào)用時(shí)都要對funcName進(jìn)行分配內(nèi)存,這個(gè)開銷很大 
啊。把這個(gè)變量聲明成static吧,當(dāng)函數(shù)再次被調(diào)用時(shí),就會(huì)省去了分配內(nèi)存的開銷,執(zhí) 
行效率也很好。 
  
  
  
  
13、函數(shù)名和變量名的命名 
———————————— 
我看到許多程序?qū)ψ兞棵秃瘮?shù)名的取名很草率,特別是變量名,什么a,b,c,aa,bb,cc, 
還有什么flag1,flag2, cnt1, cnt2,這同樣是一種沒有“修養(yǎng)”的行為。即便加上好的注 
釋。好的變量名或是函數(shù)名,我認(rèn)為應(yīng)該有以下的規(guī)則: 
  
    1) 直觀并且可以拼讀,可望文知意,不必“解碼”。 
    2) 名字的長度應(yīng)該即要最短的長度,也要能最大限度的表達(dá)其含義。 

    3) 不要全部大寫,也不要全部小寫,應(yīng)該大小寫都有,如:GetLocalHostName 或是 
UserAccount。 
    4) 可以簡寫,但簡寫得要讓人明白,如:ErrorCode -> ErrCode, 
ServerListener -> ServLisner,UserAccount -> UsrAcct 等。 
    5) 為了避免全局函數(shù)和變量名字沖突,可以加上一些前綴,一般以模塊簡稱做為前綴 
    6) 全局變量統(tǒng)一加一個(gè)前綴或是后綴,讓人一看到這個(gè)變量就知道是全局的。 
    7) 用匈牙利命名法命名函數(shù)參數(shù),局部變量。但還是要堅(jiān)持“望文生意”的原則。 
    8) 與標(biāo)準(zhǔn)庫(如:STL)或開發(fā)庫(如:MFC)的命名風(fēng)格保持一致。 
  
  
  
  
14、函數(shù)的傳值和傳指針 
———————————— 
向函數(shù)傳參數(shù)時(shí),一般而言,傳入非const的指針時(shí),就表示,在函數(shù)中要修改這個(gè)指針把 
指內(nèi)存中的數(shù)據(jù)。如果是傳值,那么無論在函數(shù)內(nèi)部怎么修改這個(gè)值,也影響不到傳過來 
的值,因?yàn)閭髦凳侵粌?nèi)存拷貝。 
  
什么?你說這個(gè)特性你明白了,好吧,讓我們看看下面的這個(gè)例程: 
  
void 
void 
GetVersion(char* pStr) 
{ 
    pStr = malloc(10); 
    strcpy ( pStr, "2.0" ); 
} 
  
main() 
{ 
    char* ver = NULL; 
    GetVersion ( ver ); 
    ... 
    ... 
    free ( ver ); 
} 
  
我保證,類似這樣的問題是一個(gè)新手最容易犯的錯(cuò)誤。程序中妄圖通過函數(shù)GetVersion給 
指針ver分配空間,但這種方法根本沒有什么作用,原因就是——這是傳值,不是傳指針。 
你或許會(huì)和我爭論,我分明傳的時(shí)指針啊?再仔細(xì)看看,其實(shí),你傳的是指針其實(shí)是在傳 
值。 
  
  
  
  
15、修改別人程序的修養(yǎng) 
——————————— 
  
當(dāng)你維護(hù)別人的程序時(shí),請不要非常主觀臆斷的把已有的程序刪除或是修改。我經(jīng)常看到 
有的程序員直接在別人的程序上修改表達(dá)式或是語句。修改別人的程序時(shí),請不要?jiǎng)h除別 
人的程序,如果你覺得別人的程序有所不妥,請注釋掉,然后添加自己的處理程序,必竟 
,你不可能100%的知道別人的意圖,所以為了可以恢復(fù),請不依賴于CVS或是SourceSafe這 
種版本控制軟件,還是要在源碼上給別人看到你修改程序的意圖和步驟。這是程序維護(hù)時(shí) 
,一個(gè)有修養(yǎng)的程序員所應(yīng)該做的。 
  
如下所示,這就是一種比較好的修改方法: 
  
    /* 
     * ----- commented by haoel 2003/04/12 ------ 
     * 
     *   char* p = ( char* ) malloc( 10 ); 
     *   memset( p, 0, 10 ); 
     */ 
  
    /* ------ Added by haoel   2003/04/12 ----- */ 
     char* p = ( char* )calloc( 10, sizeof char ); 
    /* ---------------------------------------- */ 
     *   char* p = 開始使勁) malloc( 10 ); 
     *   memset( p, 0, 10 ); 
     */ 
  
    /* ------ Added by haoel   2003/04/12 ----- */ 
     char* p = ( char* )calloc( 10, sizeof char ); 
    /* ---------------------------------------- */ 
    ... 
  
當(dāng)然,這種方法是在軟件維護(hù)時(shí)使用的,這樣的方法,可以讓再維護(hù)的人很容易知道以前 
的代碼更改的動(dòng)作和意圖,而且這也是對原作者的一種尊敬。 
  
以“注釋 — 添加”方式修改別人的程序,要好于直接刪除別人的程序。  

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影在线免费看| 久久亚洲精华国产精华液| 亚洲欧美一区二区三区极速播放 | 亚洲国产精品激情在线观看| 91精品在线免费观看| 亚洲一区二区黄色| 欧美揉bbbbb揉bbbbb| 视频一区国产视频| 日韩欧美色综合网站| 国产一区不卡在线| 欧美国产一区在线| 一本色道久久加勒比精品| 亚洲黄色免费网站| 91麻豆精品国产91久久久使用方法| 亚洲国产精品嫩草影院| 制服丝袜亚洲网站| 精品一区二区影视| 国产精品国产三级国产| 一本大道综合伊人精品热热 | 日韩精品中文字幕在线一区| 久久99精品久久久久婷婷| 久久久久久久久久久电影| 成人午夜私人影院| 亚洲午夜电影在线| 欧美大白屁股肥臀xxxxxx| 国产成人在线视频免费播放| 亚洲色欲色欲www| 在线综合视频播放| 国产不卡视频在线观看| 一区二区三区在线播放| 欧美成人vps| 91视频在线看| 麻豆精品久久久| 国产精品国产三级国产普通话蜜臀| 亚洲欧洲日韩一区二区三区| 欧美午夜片在线看| 国产精品一区免费在线观看| 日韩理论片中文av| 精品人伦一区二区色婷婷| 成人免费的视频| 日韩黄色片在线观看| 国产精品女主播av| 91精品国产色综合久久久蜜香臀| 国产成人精品三级| 午夜电影久久久| 国产精品高潮呻吟| 日韩三级在线观看| 日本高清免费不卡视频| 国产毛片一区二区| 日韩黄色一级片| 亚洲免费在线观看| 久久久久久9999| 8v天堂国产在线一区二区| 9i在线看片成人免费| 国产一区亚洲一区| 丝袜亚洲精品中文字幕一区| 最新久久zyz资源站| 精品国产凹凸成av人导航| 欧美性感一区二区三区| www.欧美日韩国产在线| 精品亚洲国产成人av制服丝袜| 亚洲午夜免费视频| 亚洲欧洲av色图| 国产欧美日韩卡一| 精品国产伦一区二区三区观看方式 | 久久久噜噜噜久久中文字幕色伊伊| 欧美在线一二三| 91色视频在线| 成人国产在线观看| 国产精品一二三| 精品一区二区免费| 麻豆精品一二三| 日本不卡视频在线观看| 亚洲国产欧美日韩另类综合| 亚洲乱码中文字幕| 亚洲图片欧美激情| 亚洲人成精品久久久久| 国产精品不卡一区| 中文字幕在线不卡一区二区三区 | 久久久久高清精品| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一级一区二区| 在线播放一区二区三区| 欧美精品日韩精品| 69堂精品视频| 欧美一区二区三区爱爱| 欧美一级欧美一级在线播放| 91精品国产美女浴室洗澡无遮挡| 欧美日韩成人在线| 777亚洲妇女| 精品国产露脸精彩对白 | 欧美影视一区在线| 欧美三级视频在线播放| 欧美久久久久免费| 正在播放亚洲一区| 久久婷婷综合激情| 国产欧美一二三区| 中文字幕亚洲不卡| 一区二区在线观看免费视频播放| 亚洲一区免费观看| 日本欧美一区二区在线观看| 裸体一区二区三区| 国产一区二区调教| 成人免费毛片片v| 一本一道综合狠狠老| 欧美亚洲国产一区二区三区| 宅男在线国产精品| 337p粉嫩大胆噜噜噜噜噜91av| 国产欧美日韩三区| 亚洲伦理在线精品| 伦理电影国产精品| 国产iv一区二区三区| 91成人看片片| 精品少妇一区二区三区日产乱码 | 欧美—级在线免费片| 亚洲精品成人少妇| 美女看a上一区| 成人黄色软件下载| 欧美日韩午夜在线| 久久久精品国产免费观看同学| 亚洲免费观看高清完整版在线观看 | 欧美亚洲日本一区| 久久婷婷国产综合国色天香| 综合av第一页| 男人的j进女人的j一区| 国产91丝袜在线18| 欧美猛男男办公室激情| 国产欧美日韩综合精品一区二区| 一区二区三区日韩欧美| 精品一区二区三区在线播放视频| 99精品在线免费| 欧美一二三在线| 亚洲欧美一区二区不卡| 美国毛片一区二区| 日本韩国视频一区二区| 亚洲成人av资源| 粉嫩欧美一区二区三区高清影视 | 欧美精品三级日韩久久| 欧美激情一区在线观看| 青青草精品视频| 色吧成人激情小说| 欧美国产日韩一二三区| 秋霞国产午夜精品免费视频| 色综合天天做天天爱| 久久久久久99精品| 蜜桃av噜噜一区二区三区小说| 成人h版在线观看| 26uuu精品一区二区在线观看| 亚洲一区二区三区小说| www.在线欧美| 久久精品这里都是精品| 美女一区二区三区| 欧美日韩精品一区视频| 亚洲欧美国产高清| jiyouzz国产精品久久| 久久综合色一综合色88| 青青草国产精品亚洲专区无| 欧美日韩国产小视频| 亚洲三级免费电影| kk眼镜猥琐国模调教系列一区二区 | 视频一区二区欧美| 精品视频全国免费看| 国产精品免费久久| 粗大黑人巨茎大战欧美成人| xnxx国产精品| 精品一区二区影视| 精品久久久久久综合日本欧美| 日本特黄久久久高潮| 欧美美女喷水视频| 亚洲动漫第一页| 欧美日韩在线播放三区四区| 一区二区三区四区乱视频| 色综合天天做天天爱| 亚洲精品免费在线观看| 91香蕉国产在线观看软件| 1000部国产精品成人观看| 波波电影院一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 成人黄色av网站在线| 中文字幕精品三区| a在线播放不卡| 综合久久综合久久| 欧美性一区二区| 日韩—二三区免费观看av| 91精品免费观看| 精品一区二区三区香蕉蜜桃| 久久免费视频一区| 粉嫩高潮美女一区二区三区| 中文成人av在线| 色婷婷av一区| 午夜精品成人在线视频| 日韩欧美中文字幕精品| 国产一区欧美日韩| 国产精品久久久久久久裸模| 一本久道中文字幕精品亚洲嫩| 一区二区三区四区亚洲| 亚洲永久免费视频| 日韩一区二区免费在线观看| 国产一区二区三区美女| 国产精品丝袜一区|