<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    高質量C++/C 編程指南—讀后感

    高質量 C++/C 編程指南 讀后感

    2005-9-21

    ??? 讀了前言,感觸頗深,以前一直認為只要會編程,能夠實現所要求的功能就可以算的上是一個合格的程序員了,然而今天才了解到,并沒有這么簡單,就以個小小的函數而言,它實現的只是一個功能,但是對一個合格的程序員來說卻需要注意很多問題:首先是編程風格,一段整齊的代碼可讀性強,在適當的地方加上詳細的注釋,讓別人充分理解你的程序,如果一段程序只有編寫者自己才能讀懂,這段程序只能說是很失敗的程序;其次是異常處理,每一個輸入輸出都可能產生異常,而異常則會導致程序的崩潰或者輸出結果與預期的值不符合,程序要如何保證對各種各樣異常的處理,如何保證程序運行的正確性,這一點也非常重要;還有對算法的復雜度的設計,同樣的功能,不同的算法可能產生不同的效率,所需的資源也可能有差別,不能只是認為簡單的實現了功能就萬事大吉了,要好好的思考一下如何才能提高程序的效率,要設計高效率的程序。

    ??? 第一章主要講文件的結構,文件應該定義兩個部分,頭文件和定義文件,在前面還要再加上版權和版本的聲明。以前自己寫程序都是所有的東西都寫在一個文件中,包括頭文件,定義文件,這樣,文件的結構不是很清楚,而且在代碼多的時候更加覺的很繁瑣,而將這兩個文件分開定義則都很分明,在都文件中都是定義的部分,而在定義文件中寫程序的實現體,這樣是比較清晰的,在項目大的時候會用到目錄結構,需要更加注意。

    ??? 第二章講程序的版式,覺的這部分很重要,這是一個習慣問題,空行和空格不會浪費內存,但是卻可以使得程序結構清晰,其實編程也是一種藝術,清晰的代碼會給人很輕松的感覺,而煩亂的代碼會使人容易厭倦,不想再讀下去!變量初始化最好采用就近原則,負責容易忘記,要養成對齊的好習慣,長行需要拆分,太長會不方便閱讀,要記得注釋,我最近作的兩個例子中都很少加注釋,清晰的注釋更容易讓別人理解你的程序,所以一定要加注釋,而且盡量要注釋清楚。類中定義順序最好先定義public函數,再定義private數據,不過我的習慣剛好相反,所以這方面需要注意。

    ??? 第三章講名規則,大多數公司或者項目組都會又自己的命名規則,不過有一些共有的,在本章有所介紹,我在編程的過程中,經常會用到i,j等局部變量,而且很多都只是很簡單的字母,這個習慣很不好,這樣代碼的可讀性差,所以要注意命名,要用英文單詞的組合讓函數或者參數從名字上就可以知道他們的作用或者意義,這一點值得注意,這也是需要養成的習慣。

    ??? 第四章講表達式和基本語句,布爾類型與零值的比較要用if(flag)或者在flag前加!表示false,它不應與具體的值比較,整形值比較用==(!=),用=表示賦值,浮點型比較:if ((x>=-EPSINON) && (x<=EPSINON))其中EPSINON 是精度,不要與0.0比較,指針應該與NULL比較。使用三元運算符可以使程序更簡潔!循環要考慮到效率,寫法的不同可能導致效率差別很大,要采用高效的循環方式!還有一些小的細節需要注意,在文章中都有詳細的說明。

    ??? 第五章講常量,常量用起來是很方便的,但是在類中const 數據成員的初始化只能在類構造函數的初始化表中進行,這點值得注意,在類中還要注意枚舉常量的使用!

    ??? 第六章函數設計,需要注意的幾點:1.輸入參數值傳遞,用const &方式提高效率;2.盡量用引用傳遞,但是在某些場合必須要用值傳遞,視情況而定;3.返回值的使用,不能返回指向“棧內存”的“指針”或者“引用”,返回對象時要考慮到效率;4.函數要短小精悍,功能單一,盡量少用static,要用assert這個利器進行測試;5.指針和引用的使用,我在學習C++的時候,對指針就不是很了解,沒有掌握指針的用法,現在還在學習,不過應該盡量使用引用,盡量避免指針的一些特殊用法。

    ??? 第七章講內存管理,這個部分是個難點,對內存的管理非常靈活,但是問題也是非常多的,很容易就會出現很多的問題。1.內存分配之后加assert(p!=NULL),或者在用new申請內存時用if(p==NULL)或if(p!=NULL)進行防錯處理;2.申請完內存之后馬上進行初始化,這一點要養成習慣;3.內存使用完后,釋放內存,這點對以前使用java的我尤為重要,以前在java機制中,不需要釋放內存,由java的機制自動回收,但是vc++不同,需要釋放資源,以免內存泄漏;4.釋放內存之后,將指針設置為NULL,防止產生“野指針”;5.指針和數組內容的復制要用strcpy函數,不能用==,而比較要用strcmp;6.內存容量用sizeof獲取;7.不能用指針申請動態內存,要用指針的指針或者用函數的返回值來傳遞動態的內存;8.free和delete只是釋放內存,并沒有把指針本身干掉;9.“野指針”是指向“垃圾內存的指針”,指針操作超越了變量的作用范圍會產生“野指針”;10. malloc/free不能用在構造函數和析構函數中,在這里要用到new/delete;11.一般情況下,不會出現內存耗盡的問題,不過高質量的程序還是應該考慮到這個問題。總的來說,本章是個重點,指針的使用是一大難點,要學會使用指針,有效的使用指針可以提到程序的效率,指針雖然容易出錯,但是卻非常的靈活,正確使用非常重要。

    第八章講C++的高級特性,了解了一下的特性:1.重載簡言之就是函數名相同,參數不同(作用域要相同);2. 當心隱式類型轉換導致重載函數,有些值,系統不知道要轉換成什么類型,所以要對其進行顯式轉換,這樣不至于得到意料之外的結果;3.在覆蓋和重載的時候經常會遇到隱藏,很容易搞混亂,解決方法載文章中有,覆蓋必須要有virtual關鍵字;4. 參數缺省值只能出現在函數的聲明中,而不能出現在定義體中,函數有多個參數,參數只能從后向前挨個兒缺省;5.運算符的重載,比較難,不要輕易使用;6. 關鍵字inline 必須與函數定義體放在一起才能使函數成為內聯,只放在聲明處不能,類聲明之中的成員函數將自動地成為內聯函數,內聯函數是以內存為代價的,慎用內聯。

    第九章講構造函數等內容,有以下的收獲:1.構造函數負責對象的創建,用于初始化成員變量,析構函數用于銷毀對象,在構造函數中要注意初始化列表的使用;2.拷貝構造函數和賦值函數較難寫,需要在使用中進一步理解體會。本章的內容與類有關,在以后的編碼過程中需要多加注意。

    第十章講類的繼承和組合,類的繼承體現的面相對象的編程思想,提倡使用,但是在一些情況下需要用到組合,要注意編程的設計方法,不要覺得代碼正確就可以了,要用正確的設計方法,編寫出高質量的程序。

    第十一章講其他的編程經驗,const的用法有很多,它不僅僅定義一個常量,還可以定義函數,const函數不允許修改數據成員和調用非const成員函數。在后面還列出了很多需要注意的技巧,在編程的過程中因該嚴格執行,養成好的編程習慣。

    附錄以及習題是對文章中的內容的總結和檢測。

    ??? 以上是對本文的理解和對關鍵點的記錄,這本書可以作為一個規范,隨時翻翻,應該按照里面提到的各種規則嚴格要求自己,在以后的編程中形成一種良好的編程習慣,這樣才能編出高質量的程序。

    posted on 2005-09-21 15:35 扭轉乾坤 閱讀(785) 評論(0)  編輯  收藏 所屬分類: 亂七八糟

    <2005年9月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類(31)

    隨筆檔案(30)

    文章分類(32)

    文章檔案(33)

    相冊

    PHP小站-首頁

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费看国产精品3a黄的视频| 亚洲欧洲精品一区二区三区| AV片在线观看免费| 国内精品久久久久影院免费 | 亚洲视频人成在线播放| 免费人成在线观看69式小视频| 两个人日本WWW免费版| 亚洲成AV人影片在线观看| 亚洲一区二区三区免费在线观看| 久久精品国产69国产精品亚洲| 亚洲日本在线免费观看| 97在线免费观看视频| 激情综合亚洲色婷婷五月| 久久精品国产99精品国产亚洲性色| 亚洲高清免费视频| 99久久综合精品免费| 久久免费视频观看| 叮咚影视在线观看免费完整版 | 免费国内精品久久久久影院| 成人看的午夜免费毛片| 一级做a毛片免费视频| 视频一区二区三区免费观看| 亚洲欧美国产国产一区二区三区| 亚洲一级高清在线中文字幕| 亚洲综合男人的天堂色婷婷| 一级毛片免费观看| 色妞WWW精品免费视频| 2015日韩永久免费视频播放 | 免费视频专区一国产盗摄| 免费看大美女大黄大色 | 亚洲人色婷婷成人网站在线观看| 国产猛男猛女超爽免费视频| 在线亚洲人成电影网站色www| 色偷偷尼玛图亚洲综合| 91成人免费观看在线观看| 可以免费看的卡一卡二| 国产日产亚洲系列| 亚洲日韩一区精品射精| 亚洲欧洲国产成人综合在线观看 | 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | aaa毛片免费观看|