亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

《C++編程規范》筆記(設計風格)

2019-11-17 05:16:54
字體:
來源:轉載
供稿:網友
第1條:一個實體應該只有一個緊湊的職責

  單一職責原則。這個原則并不那么輕易執行,即使是STL這樣的程序庫,也一樣會犯違反該原則的錯誤。在這里,舉了兩個違反這一原則的聞名實現:realloc和stl 中的basic_string。不過,對于basic_string,我想比起MFC中的CString還是好了不少。在《Exceptional C++ style》中,對basic_string作了剖析,并且得出一個普遍的原則:盡量將函數實現為獨立的函數而不是成員函數。

  嘗試用一句話來說明一個模塊的功能,既不多,也不少。假如無法用這樣的一句話加以概括,那么重新考慮規劃該模塊的職責?! ?br />
  第2條:正確、簡單和清楚第一

  簡單的說,堅持KISS原則:正確優于速度,簡單優于復雜,清楚優于機巧,安全優于不安全。

  程序必須為閱讀它的人編寫,只是順便用于機器執行 * 編寫程序應該以人為本,計算機第二

  計算機系統中最便宜、最快速、最可靠的組件都還不存在

  ......簡單設計的重要性怎么強調也不過分

  使一個正確的程序變快,比使一個快速的程序正確要輕易的多

  避免使用程序設計語言的冷僻特性,應該使用最簡單的有效技術

  不要毫無節制地重載運算符。

  不要濫用匿名變量,合理使用命名變量。當然,這不是說連vector().swap(other)這樣的慣用法也要排斥?!?br />
  第3條:編程中應知道何時和如何考慮可伸縮性

  從字面上來看,這差不多等于外交辭令。答案無非是“適當的”時候“適當地”考慮可伸縮性。這非常依靠于軟件工程師的經驗和知識。所以,本條目也“適當地”回避了那種缺乏營養的教導,著重討論算法復雜度的選擇問題。

  基本上,線性復雜度可以作為一個算法是否可選的分界點。值得花費精力避免選擇差于線性復雜度的算法,而不差于線性復雜度的算法則可以接受。所以,把性能放在嘴邊的兄弟們注重了,你的精力可別放錯了地方,高德納言猶在耳:不成熟的優化是程序設計中的萬惡之源。必要時,先努力優化復雜度(選擇好的算法----算法無用論者,去面壁?。?。

  順便提一句排序算法,通用排序算法的復雜度最好是O(NlgN),但是特定領域完全可以有更好復雜度的算法?! ?br />
  第4條:不要進行不成熟的優化

  “不成熟的優化是程序設計中的萬惡之源” ----高德納引用的這句話這本書中出現了若干次,高德納在他的不朽名著《計算機程序設計藝術》中也一再強調了這一點,還說他以前程序中的許多錯誤都是關于不成熟優化的。看來,唯一在誘惑面前沒有墮落的,只有耶穌,即使是大師也無法抗拒。既然如此,建議把下面的話放在電腦桌面上:  

  讓一個正確的程序更快速,

  比讓一個快速的程序正確,要輕易的太多太多。 第5條:不要進行不成熟的劣化

  什么是不成熟的劣化呢?典型的有:  

  在可以通過引用傳遞的時候,卻定義了通過值傳遞參數。

  在使用前綴++操作符很適合的場合,卻使用后綴版本。

  在構造函數中使用賦值操作而不是初始化列表。

  關于第一條有一些例外,一般而言,不建議傳遞原生類型的引用(討論前提是傳值的程序語義沒有問題)。關于第二條,一些很老的C語言的書上有過后綴版本可能比前綴版本更快----當然,這只可能針對原生類型--的說法,忘記它吧,現代編譯器會輕而易舉的優化掉這之間的差異。而對于用戶定義類型,實現后綴形式的++和--操作符都意味著效率上的損失。習慣的力量是巨大的,養成使用前綴版本的習慣吧。

  然而,要區別不成熟的優化和不成熟的劣化之間,需要足夠的練習和基礎知識,這些知識可以從《Effective C++》,《More Effective C++》《Exceptional C++》《More Exceptional C++》中獲得。  

  第6條:盡量減少全局和共享數據

  全局數據是應該努力避免的,它導致兩個問題:名字污染和遠程耦合。類的公有靜態變量只是解決了名字污染問題,并沒有解決遠程數據耦合問題。同樣,Singleton模式也存在遠程耦合問題。

  全局數據通常就意味著共享,共享數據則意味著關系,意味著復雜性。再多線程中,對共享數據的訪問通常都需要串行化。

  關于變量,一個比較深刻的看法是:一個算法使用的變量(命名的和匿名的)越少,就越好。這個變量包括局部變量?! ?br />
  第7條:信息隱藏

  對于一個類,決不要將數據公開(數值聚合的strUCt 例外),也不要返回指向內部數據成員的指針或引用供外部代碼修改。通過提供抽象,我們將獲得插入不變式檢查的能力?! ?br />
  第8條:懂得何時和如何進行并發性編程

  這個問題主要是考慮多線程和多進程的編程,我期待著并行程序設計進入C++的領域。要編寫正確、安全的多線程代碼并不簡單,非凡是考慮到可移植性時,更是如此。

  不過,本條目的題目太大了,很難在一個條目中描述完整,只能概述幾個要點:  

  參考目標平臺文檔,了解該平臺的同步化原語。

  最好將平臺原語用自己設計的抽象包裝起來


  確保正在使用的類型在多線程程序中使用是安全的

  第9條:確保資源為對象所擁有。使用顯式的RAII和智能指針

  似乎是在《Imperfact C++》中說過:僅僅因為有RAII就值得使用C++。C++/CLI也強調引入確定性析構,確定性析構正式RAII得以實現的基礎之一。通過RAII我們能夠得到的遠遠超出一般程序員的想象,在討論異常安全代碼時,將進一步見識RAII的威力。

  在實現RAII時,需要小心復制構造和賦值,編譯器的版本可能并不正確。另外,需要確保資源為對象所有,不要在一行分配一個以上的資源。下面的代碼是不安全的:

  Fun(shared_ptr(new Widget), shared_ptr(new Widget));

  取而代之的正確方法是:

  shared_ptr sp1(new Widget), sp2(new Widget);

   Fun(sp1, sp2);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九视频直播综合网| 91在线观看欧美日韩| 久久成人亚洲精品| 性色av一区二区三区| 国内揄拍国内精品| 欧美精品一本久久男人的天堂| 在线国产精品播放| 欧美综合第一页| 欧美激情免费视频| 91久久夜色精品国产网站| 国产成人精品亚洲精品| 国产男女猛烈无遮挡91| 精品国产依人香蕉在线精品| 亚洲欧美在线磁力| 亚洲一区二区久久久久久| 欧美激情成人在线视频| 欧美日韩免费在线观看| 亚洲精品中文字幕女同| 久久精品视频网站| 国内免费久久久久久久久久久| 久久伊人精品一区二区三区| 伦理中文字幕亚洲| 精品国产美女在线| 精品丝袜一区二区三区| 中文字幕亚洲欧美在线| 国产亚洲免费的视频看| 久久婷婷国产麻豆91天堂| 国产日韩欧美在线视频观看| 久久天天躁狠狠躁夜夜躁| 日韩av电影免费观看高清| 亚洲sss综合天堂久久| 欧美壮男野外gaytube| 国产精品中文字幕在线观看| 亚洲成年网站在线观看| 欧美视频一二三| 国语自产精品视频在免费| 国产精品久久久999| 国产成人a亚洲精品| 亚洲一区二区在线播放| 国产成人综合一区二区三区| 在线观看视频99| 韩国19禁主播vip福利视频| 97久久精品视频| 91精品国产成人| 欧美中文字幕在线视频| 亚洲成人精品久久| 欧美理论片在线观看| 91免费观看网站| 中文字幕日韩精品在线观看| 91久久精品国产91久久性色| 日韩av综合网站| 在线a欧美视频| 九九热99久久久国产盗摄| 亚洲色图第一页| 亚洲成人激情在线| 日韩亚洲精品电影| 91精品在线观看视频| 操人视频在线观看欧美| 中文字幕日韩欧美精品在线观看| 精品视频www| 欧美一二三视频| 日韩精品一二三四区| 日韩欧美主播在线| 亚洲女人初尝黑人巨大| 日韩美女激情视频| 欧美资源在线观看| 这里只有精品丝袜| 亚洲欧洲午夜一线一品| 2019日本中文字幕| 日韩av片免费在线观看| 亚洲国产精品推荐| 久久国产精品久久精品| 久久精品国产亚洲精品| 日本精品久久久久久久| 国产午夜精品一区二区三区| 欧美极品在线视频| 一区二区三区视频免费在线观看| 久久久噜噜噜久久中文字免| 久久精品91久久久久久再现| 亚洲美女中文字幕| 亚洲欧美国产视频| 国产精品亚洲欧美导航| 美女视频黄免费的亚洲男人天堂| 欧美精品午夜视频| 亚洲a∨日韩av高清在线观看| 97人人爽人人喊人人模波多| 人九九综合九九宗合| 国产日韩在线播放| 亚洲天堂男人的天堂| 中文欧美日本在线资源| 视频在线观看一区二区| 国产精品久久久久久一区二区| 大桥未久av一区二区三区| 在线亚洲男人天堂| 神马久久桃色视频| www.久久草.com| 亚洲自拍偷拍网址| 国产一区玩具在线观看| 18一19gay欧美视频网站| 两个人的视频www国产精品| 欧美日韩国产精品一区二区不卡中文| 91av免费观看91av精品在线| 亚洲国产成人爱av在线播放| 中文字幕在线观看亚洲| 精品福利在线视频| 日韩激情视频在线播放| 另类图片亚洲另类| 国产欧美亚洲精品| 国产激情久久久| 欧美另类老女人| 日韩一二三在线视频播| 中文字幕av一区二区三区谷原希美| 欧美精品成人在线| 一本大道香蕉久在线播放29| 日韩高清电影免费观看完整版| 久久久精品中文字幕| 国产亚洲欧洲高清一区| 亚洲精品天天看| 高清在线视频日韩欧美| 91天堂在线视频| 91老司机精品视频| 国产丝袜一区二区三区免费视频| 91久久国产婷婷一区二区| 久久亚洲精品中文字幕冲田杏梨| 欧美国产日韩一区| 91精品国产自产在线| 亚洲欧美一区二区三区在线| 精品美女国产在线| 亚洲精品免费在线视频| 亚洲视频在线播放| 亚洲欧美国产日韩天堂区| 精品亚洲夜色av98在线观看| 亚洲尤物视频网| 欧美超级乱淫片喷水| 欧美激情三级免费| 亚洲第一av在线| 国产精品三级久久久久久电影| 久久99久久99精品中文字幕| 97精品国产97久久久久久| 亚洲一区二区三区香蕉| 色久欧美在线视频观看| 久久免费视频这里只有精品| 欧美性极品xxxx娇小| 免费成人高清视频| 亚洲天堂色网站| 九九久久久久99精品| 久精品免费视频| 亚洲 日韩 国产第一| 欧美亚洲免费电影| 国产精品aaa| 欧美激情中文字幕在线| 中文字幕一区日韩电影| 美女视频黄免费的亚洲男人天堂| 91精品久久久久久久| 欧美日韩中国免费专区在线看| 亚洲第一福利网站| 亚洲aⅴ男人的天堂在线观看| 亚洲精品午夜精品| 亚洲欧美国内爽妇网| 一区二区三区四区视频| 亚洲精品国产拍免费91在线| 国内精品中文字幕| 欧美视频国产精品| 伊人久久久久久久久久久久久|