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

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

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

?? 《編程修養(yǎng)》對C/C++初學(xué)者是一個良好的習(xí)慣典范
?? TXT
字號:
16、把相同或近乎相同的代碼形成函數(shù)和宏 
————————————————————— 
  
有人說,最好的程序員,就是最喜歡“偷懶”的程序,其中不無道理。 
  
如果你有一些程序的代碼片段很相似,或直接就是一樣的,請把他們放在一個函數(shù)中。而 
如果這段代碼不多,而且會被經(jīng)常使用,你還想避免函數(shù)調(diào)用的開銷,那么就把他寫成宏 
吧。 
  
千萬不要讓同一份代碼或是功能相似的代碼在多個地方存在,不然如果功能一變,你就要 
修改好幾處地方,這種會給維護(hù)帶來巨大的麻煩,所以,做到“一改百改”,還是要形成 
函數(shù)或是宏。 
  
  
  
17、表達(dá)式中的括號 
17、表達(dá)式中的括號 
————————— 
  
如果一個比較復(fù)雜的表達(dá)式中,你并不是很清楚各個操作符的憂先級,即使是你很清楚優(yōu) 
先級,也請加上括號,不然,別人或是自己下一次讀程序時,一不小心就看走眼理解錯了 
,為了避免這種“誤解”,還有讓自己的程序更為清淅,還是加上括號吧。 
  
比如,對一個結(jié)構(gòu)的成員取地址: 
  
    GetUserAge( &( UserInfo->age ) ); 
  
雖然,&UserInfo->age中,->操作符的優(yōu)先級最高,但加上一個括號,會讓人一眼就看明 
白你的代碼是什么意思。 
  
再比如,一個很長的條件判斷: 
  
if ( ( ch[0] >= '0' || ch[0] <= '9' ) && 
     ( ch[1] >= 'a' || ch[1] <= 'z' ) && 
     ( ch[2] >= 'A' || ch[2] <= 'Z' )    ) 
  
括號,再加上空格和換行,你的代碼是不是很容易讀懂了? 
  
  
  
18、函數(shù)參數(shù)中的const 
——————————— 
  
對于一些函數(shù)中的指針參數(shù),如果在函數(shù)中只讀,請將其用const修飾,這樣,別人一讀到 
你的函數(shù)接口時,就會知道你的意圖是這個參數(shù)是[in],如果沒有const時,參數(shù)表示[in/ 
out],注意函數(shù)接口中的const使用,利于程序的維護(hù)和避免犯一些錯誤。 
  
雖然,const修飾的指針,如:const char* p,在C中一點用也沒有,因為不管你的聲明是 
不是const,指針的內(nèi)容照樣能改,因為編譯器會強制轉(zhuǎn)換,但是加上這樣一個說明,有利 
于程序的閱讀和編譯。因為在C中,修改一個const指針?biāo)赶虻膬?nèi)存時,會報一個Warning 
。這會引起程序員的注意。 
  
C++中對const定義的就很嚴(yán)格了,所以C++中要多多的使用const,const的成員函數(shù),cons 
t的變量,這樣會對讓你的代碼和你的程序更加完整和易讀。(關(guān)于C++的const我就不多說 
了) 
  
  
  
19、函數(shù)的參數(shù)個數(shù)(多了請用結(jié)構(gòu)) 
————————————————— 
  
函數(shù)的參數(shù)個數(shù)最好不要太多,一般來說6個左右就可以了,眾多的函數(shù)參數(shù)會讓讀代碼的 

人一眼看上去就很頭昏,而且也不利于維護(hù)。如果參數(shù)眾多,還請使用結(jié)構(gòu)來傳遞參數(shù)。 
這樣做有利于數(shù)據(jù)的封裝和程序的簡潔性。 
  
也利于使用函數(shù)的人,因為如果你的函數(shù)個數(shù)很多,比如12個,調(diào)用者很容易搞錯參數(shù)的 
順序和個數(shù),而使用結(jié)構(gòu)struct來傳遞參數(shù),就可以不管參數(shù)的順序。 
  
而且,函數(shù)很容易被修改,如果需要給函數(shù)增加參數(shù),不需要更改函數(shù)接口,只需更改結(jié) 
構(gòu)體和函數(shù)內(nèi)部處理,而對于調(diào)用函數(shù)的程序來說,這個動作是透明的。 
  
  
  
  
20、函數(shù)的返回類型,不要省略 
—————————————— 
  
我看到很多程序?qū)懞瘮?shù)時,在函數(shù)的返回類型方面不太注意。如果一個函數(shù)沒有返回值, 
也請在函數(shù)前面加上void的修飾。而有的程序員偷懶,在返回int的函數(shù)則什么不修飾(因 
為如果不修飾,則默認(rèn)返回int),這種習(xí)慣很不好,還是為了原代碼的易讀性,加上int 
吧。 
  
所以函數(shù)的返回值類型,請不要省略。 
  
  
另外,對于void的函數(shù),我們往往會忘了return,由于某些C/C++的編譯器比較敏感,會報 
一些警告,所以即使是void的函數(shù),我們在內(nèi)部最好也要加上return的語句,這有助于代 
碼的編譯。 
  
  
  
  
21、goto語句的使用 
————————— 
  
N年前,軟件開發(fā)的一代宗師——迪杰斯特拉(Dijkstra)說過:“goto statment is 
harmful !!”,并建議取消goto語句。因為goto語句不利于程序代碼的維護(hù)性。 
  
這里我也強烈建議不要使用goto語句,除非下面的這種情況: 
  
  
    #define FREE(p) if(p) { \ 
                        free(p); \ 
                        p = NULL; \ 
                    } 
  
    main() 
    main() 
    { 
        char *fname=NULL, *lname=NULL, *mname=NULL; 
  
        fname = ( char* ) calloc ( 20, sizeof(char) ); 
        if ( fname == NULL ){ 
goto ErrHandle; 
        } 
  
        lname = ( char* ) calloc ( 20, sizeof(char) ); 
        if ( lname == NULL ){ 
            goto ErrHandle; 
        } 
  
        mname = ( char* ) calloc ( 20, sizeof(char) ); 
        if ( mname == NULL ){ 
            goto ErrHandle; 
        } 
  
        ...... 
  
  
     ErrHandle: 
     ErrHandle: 
        FREE(fname); 
        FREE(lname); 
        FREE(mname); 
        ReportError(ERR_NO_MEMOEY); 
     } 
  
也只有在這種情況下,goto語句會讓你的程序更易讀,更容易維護(hù)。(在用嵌C來對數(shù)據(jù)庫 
設(shè)置游標(biāo)操作時,或是對數(shù)據(jù)庫建立鏈接時,也會遇到這種結(jié)構(gòu)) 
  
  
  
  
22、宏的使用 
—————— 
  
很多程序員不知道C中的“宏”到底是什么意思?特別是當(dāng)宏有參數(shù)的時候,經(jīng)常把宏和函 
數(shù)混淆。我想在這里我還是先講講“宏”,宏只是一種定義,他定義了一個語句塊,當(dāng)程 
序編譯時,編譯器首先要執(zhí)行一個“替換”源程序的動作,把宏引用的地方替換成宏定義 
的語句塊,就像文本文件替換一樣。這個動作術(shù)語叫“宏的展開” 
  
使用宏是比較“危險”的,因為你不知道宏展開后會是什么一個樣子。例如下面這個宏: 
  
  
    #define  MAX(a, b)     a>b?a:b 
  
當(dāng)我們這樣使用宏時,沒有什么問題: MAX( num1, num2 ); 因為宏展開后變成 
num1>num2?num1:num2;。 但是,如果是這樣調(diào)用的,MAX( 17+32, 25+21 ); 呢,編譯時 
出現(xiàn)錯誤,原因是,宏展開后變成:17+32>25+21?17+32:25+21,哇,這是什么啊? 
  
所以,宏在使用時,參數(shù)一定要加上括號,上述的那個例子改成如下所示就能解決問題了 
  
    #define  MAX( (a), (b) )     (a)>(b)?(a):(b) 
  
即使是這樣,也不這個宏也還是有Bug,因為如果我這樣調(diào)用 MAX(i++, j++); , 經(jīng)過這 
個宏以后,i和j都被累加了兩次,這絕不是我們想要的。 
  
所以,在宏的使用上還是要謹(jǐn)慎考慮,因為宏展開是的結(jié)果是很難讓人預(yù)料的。而且雖然 
,宏的執(zhí)行很快(因為沒有函數(shù)調(diào)用的開銷),但宏會讓源代碼澎漲,使目標(biāo)文件尺寸變 
大,(如:一個50行的宏,程序中有1000個地方用到,宏展開后會很不得了),相反不能 
讓程序執(zhí)行得更快(因為執(zhí)行文件變大,運行時系統(tǒng)換頁頻繁)。 
  
因此,在決定是用函數(shù),還是用宏時得要小心。 
-- 
  
。                 開始使勁 
  
    #define  MAX( (a), (b) )     (a)>(b)?(a):(b) 
  
即使是這樣,也不這個宏也還是有Bug,因為如果我這樣調(diào)用 MAX(i++, j++); , 經(jīng)過這 
個宏以后,i和j都被累加了兩次,這絕不是我們想要的。 
  
所以,在宏的使用上還是要謹(jǐn)慎考慮,因為宏展開是的結(jié)果是很難讓人預(yù)料的。而且雖然 
,宏的執(zhí)行很快(因為沒有函數(shù)調(diào)用的開銷),但宏會讓源代碼澎漲,使目標(biāo)文件尺寸變 
大,(如:一個50行的宏,程序中有1000個地方用到,宏展開后會很不得了),相反不能 
讓程序執(zhí)行得更快(因為執(zhí)行文件變大,運行時系統(tǒng)換頁頻繁)。 
  
因此,在決定是用函數(shù),還是用宏時得要小心。

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2024国产精品视频| 91精品国产综合久久久久久漫画 | 奇米在线7777在线精品| 亚洲欧美偷拍三级| 中文字幕一区二区三区精华液| 欧美精彩视频一区二区三区| 久久久精品天堂| 国产精品乱子久久久久| ...xxx性欧美| 亚洲精品综合在线| 舔着乳尖日韩一区| 青青草一区二区三区| 精品一区二区三区不卡| 国产黄色精品网站| 99久久久精品| 欧美日韩一级片在线观看| 欧美一卡在线观看| 精品国产91洋老外米糕| 国产欧美日韩精品在线| 亚洲视频1区2区| 亚洲风情在线资源站| 美女视频免费一区| 岛国av在线一区| 精品视频在线免费看| 亚洲精品成人少妇| 亚洲综合色噜噜狠狠| 日韩成人午夜精品| 国产不卡视频一区| 欧美系列在线观看| 精品国产青草久久久久福利| 日韩理论在线观看| 日韩成人一级片| 99久久99久久综合| 欧美一区二区三区性视频| 久久老女人爱爱| 亚洲乱码中文字幕综合| 久久99九九99精品| 91国产免费观看| 久久精品欧美一区二区三区麻豆| 亚洲天堂精品视频| 狠狠色丁香婷综合久久| 色视频一区二区| 久久伊人中文字幕| 午夜欧美大尺度福利影院在线看| 狠狠色丁香久久婷婷综合_中| aaa欧美日韩| 精品国产免费久久| 一区二区三区蜜桃网| 国产成人在线视频网站| 在线电影一区二区三区| 1024精品合集| 国产一区二区女| 欧美日韩欧美一区二区| 中文字幕一区二区三区在线不卡| 免费高清视频精品| 欧美亚洲免费在线一区| 国产精品福利在线播放| 国产中文字幕精品| 欧美精品精品一区| 一区二区成人在线| 91亚洲资源网| 国产精品久久三区| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩一区中文字幕| 亚洲视频在线一区| 成人av动漫在线| 国产精品网站一区| 国产成人综合亚洲91猫咪| 欧美成人高清电影在线| 奇米一区二区三区| 91精品国产丝袜白色高跟鞋| 亚洲高清不卡在线| 欧美日韩亚洲不卡| 亚洲h在线观看| 欧美裸体bbwbbwbbw| 亚洲国产一区二区视频| 欧美三级在线看| 亚洲一区电影777| 欧美日韩精品综合在线| 亚洲成a人片在线不卡一二三区| 日本精品视频一区二区| 一区二区三区在线不卡| 欧美性一二三区| 五月天视频一区| 日韩一区国产二区欧美三区| 蜜桃av一区二区三区| 欧美成人伊人久久综合网| 狠狠色2019综合网| 国产色综合一区| 99国产精品久久久| 亚洲成人av资源| 日韩欧美亚洲国产另类 | 26uuuu精品一区二区| 青草国产精品久久久久久| 欧美videos中文字幕| 国产精品99久久不卡二区| 欧美国产乱子伦| 一本大道久久精品懂色aⅴ| 亚洲风情在线资源站| 欧美r级电影在线观看| 国产精品中文字幕一区二区三区| 中文字幕av一区二区三区| 色欧美日韩亚洲| 亚洲成人黄色小说| 亚洲精品在线免费播放| 99久久精品国产精品久久| 亚洲国产cao| 久久精品夜色噜噜亚洲aⅴ| 91麻豆精东视频| 免费精品99久久国产综合精品| 性做久久久久久久免费看| 久久蜜桃一区二区| 日本韩国一区二区| 激情五月婷婷综合网| 亚洲乱码国产乱码精品精的特点| 91精品国产91热久久久做人人| 成人三级伦理片| 免费黄网站欧美| 亚洲欧美国产三级| 精品成人一区二区三区四区| 91欧美一区二区| 精东粉嫩av免费一区二区三区| 亚洲精品老司机| 久久久久99精品国产片| 91精品欧美久久久久久动漫 | 国产情人综合久久777777| 欧美视频一区二区在线观看| 国产精品亚洲人在线观看| 日韩福利视频导航| 亚洲男女一区二区三区| 亚洲国产精品二十页| 欧美zozozo| 欧美夫妻性生活| 色香蕉久久蜜桃| 97久久久精品综合88久久| 国产在线播放一区| 日韩av不卡一区二区| 亚洲午夜久久久久| 亚洲色图.com| 国产精品热久久久久夜色精品三区| 欧美成人a在线| 欧美精品精品一区| 欧美日韩一区二区在线观看视频 | 91激情在线视频| 成人av先锋影音| 成人永久免费视频| 国产盗摄一区二区三区| 黑人精品欧美一区二区蜜桃| 七七婷婷婷婷精品国产| 男女性色大片免费观看一区二区| 亚洲图片有声小说| 亚洲一区影音先锋| 亚洲二区在线观看| 丝袜诱惑亚洲看片| 日韩黄色片在线观看| 热久久久久久久| 日韩1区2区日韩1区2区| 日韩av电影免费观看高清完整版在线观看| 亚洲在线视频一区| 亚洲一区二区黄色| 亚洲成人激情社区| 美女被吸乳得到大胸91| 久久精品国内一区二区三区| 久久不见久久见免费视频7| 精品在线你懂的| 国产成人av网站| 99精品视频一区二区| 91国偷自产一区二区三区观看| 色天天综合色天天久久| 欧美猛男超大videosgay| 91精品一区二区三区在线观看| 欧美大肚乱孕交hd孕妇| 日本一区二区三区免费乱视频| 国产精品免费久久久久| 亚洲综合在线免费观看| 亚洲电影视频在线| 久久综合综合久久综合| 成人做爰69片免费看网站| 91高清视频在线| 日韩美女视频一区二区在线观看| 久久先锋影音av| 亚洲日本免费电影| 日韩二区三区四区| 波波电影院一区二区三区| 欧美日韩一级二级| 久久蜜桃av一区精品变态类天堂| 国产精品色哟哟| 天天综合色天天| 国产a级毛片一区| 欧美午夜不卡在线观看免费| 26uuu色噜噜精品一区二区| 亚洲女同一区二区| 久久草av在线| 欧美亚洲另类激情小说| 久久久亚洲午夜电影| 亚洲成人先锋电影| 不卡的av在线播放| 精品精品国产高清a毛片牛牛| 亚洲欧美偷拍卡通变态| 久久电影网电视剧免费观看|