青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

TanZek's 技術空間

勇往直前,專注于技術...

首頁 新隨筆 聯系 聚合 管理
  7 Posts :: 19 Stories :: 13 Comments :: 0 Trackbacks
第1條:一個實體應該只有一個緊湊的職責
  單一職責原則。這個原則并不那么容易執(zhí)行,即使是STL這樣的程序庫,也一樣會犯違反該原則的錯誤。在這里,舉了兩個違反這一原則的著名實現:realloc和stl 中的basic_string。不過,對于basic_string,我想比起MFC中的CString還是好了不少。在《Exceptional C++ style》中,對basic_string作了剖析,并且得出一個普遍的原則:盡量將函數實現為獨立的函數而不是成員函數。
  嘗試用一句話來說明一個模塊的功能,既不多,也不少。如果無法用這樣的一句話加以概括,那么重新考慮規(guī)劃該模塊的職責。  

第2條:正確、簡單和清晰第一
  簡單的說,堅持KISS原則:正確優(yōu)于速度,簡單優(yōu)于復雜,清晰優(yōu)于機巧,安全優(yōu)于不安全。
??? 程序必須為閱讀它的人編寫,只是順便用于機器執(zhí)行
??? 編寫程序應該以人為本,計算機第二。
  計算機系統(tǒng)中最便宜、最快速、最可靠的組件都還不存在,簡單設計的重要性怎么強調也不過分。
??? 使一個正確的程序變快,比使一個快速的程序正確要容易的多。
??? 避免使用程序設計語言的冷僻特性,應該使用最簡單的有效技術。
??? 不要毫無節(jié)制地重載運算符。??
??? 不要濫用匿名變量,合理使用命名變量。?
??? 當然,這不是說連 vector().swap(other)這樣的慣用法也要排斥。 

第3條:編程中應知道何時和如何考慮可伸縮性
  從字面上來看,這差不多等于外交辭令。答案無非是“適當的”時候“適當地”考慮可伸縮性。這非常依賴于軟件工程師的經驗和知識。所以,本條目也“適當地”回避了那種缺乏營養(yǎng)的教導,著重討論算法復雜度的選擇問題。
  基本上,線性復雜度可以作為一個算法是否可選的分界點。值得花費精力避免選擇差于線性復雜度的算法,而不差于線性復雜度的算法則可以接受。所以,把性能放在嘴邊的兄弟們注意了,你的精力可別放錯了地方,高德納言猶在耳:不成熟的優(yōu)化是程序設計中的萬惡之源。必要時,先努力優(yōu)化復雜度(選擇好的算法--- -算法無用論者,去面壁!)。
  順便提一句排序算法,通用排序算法的復雜度最好是O(NlgN),但是特定領域完全可以有更好復雜度的算法。  

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

第5條:不要進行不成熟的劣化
  什么是不成熟的劣化呢?典型的有:  
  在可以通過引用傳遞的時候,卻定義了通過值傳遞參數。
  在使用前綴++操作符很適合的場合,卻使用后綴版本。
  在構造函數中使用賦值操作而不是初始化列表。
  關于第一條有一些例外,一般而言,不建議傳遞原生類型的引用(討論前提是傳值的程序語義沒有問題)。關于第二條,一些很老的C語言的書上有過后綴版本可能比前綴版本更快----當然,這只可能針對原生類型--的說法,忘記它吧,現代編譯器會輕而易舉的優(yōu)化掉這之間的差異。而對于用戶定義類型,實現后綴形式的++和--操作符都意味著效率上的損失。習慣的力量是巨大的,養(yǎng)成使用前綴版本的習慣吧。
  然而,要區(qū)別不成熟的優(yōu)化和不成熟的劣化之間,需要足夠的訓練和基礎知識,這些知識可以從《Effective C++》,《More Effective C++》《Exceptional C++》《More Exceptional C++》中獲得。


第6條:盡量減少全局和共享數據
  全局數據是應該努力避免的,它導致兩個問題:名字污染和遠程耦合。類的公有靜態(tài)變量只是解決了名字污染問題,并沒有解決遠程數據耦合問題。同樣,Singleton模式也存在遠程耦合問題。
  全局數據通常就意味著共享,共享數據則意味著關系,意味著復雜性。再多線程中,對共享數據的訪問通常都需要串行化。
  關于變量,一個比較深刻的看法是:一個算法使用的變量(命名的和匿名的)越少,就越好。這個變量包括局部變量。  

第7條:信息隱藏
  對于一個類,決不要將數據公開(數值聚合的struct 例外),也不要返回指向內部數據成員的指針或引用供外部代碼修改。通過提供抽象,我們將獲得插入不變式檢查的能力。  

第8條:懂得何時和如何進行并發(fā)性編程
  這個問題主要是考慮多線程和多進程的編程,我期待著并行程序設計進入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);

Trackback: http://ncre.csai.cn/ncrefx/200605300909241137.htm

posted on 2006-05-31 11:27 TanZek 閱讀(253) 評論(0)  編輯 收藏 引用 所屬分類: C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产一区二区三区 | 国产精品婷婷午夜在线观看| 狠狠狠色丁香婷婷综合激情| 欧美在线亚洲综合一区| 亚洲一区二区三区在线| 国产精品女人毛片| 久久精选视频| 免费精品99久久国产综合精品| 亚洲高清中文字幕| 亚洲欧洲精品一区二区三区| 欧美激情精品久久久六区热门| 在线视频一区二区| 亚洲午夜精品视频| 国产一区三区三区| 欧美激情精品久久久久久| 欧美成人69| 午夜伦欧美伦电影理论片| 性做久久久久久免费观看欧美 | 欧美中文字幕视频在线观看| 国内外成人免费激情在线视频网站| 久久免费少妇高潮久久精品99| 老牛嫩草一区二区三区日本 | 韩日欧美一区二区三区| 欧美成人乱码一区二区三区| 欧美精品 国产精品| 欧美一区2区三区4区公司二百| 欧美在线三区| 9色精品在线| 欧美一站二站| 一区二区冒白浆视频| 午夜精品视频在线观看| 亚洲国产婷婷| 亚洲午夜av电影| 亚洲高清在线| 午夜国产欧美理论在线播放| 亚洲三级电影在线观看| 欧美亚洲视频一区二区| 一本色道88久久加勒比精品| 久久国产精彩视频| 亚洲午夜在线| 免费视频一区| 久久久噜噜噜久久人人看| 欧美日韩性视频在线| 久久午夜精品| 欧美亚一区二区| 亚洲国产精品电影在线观看| 国产偷国产偷精品高清尤物| 日韩视频―中文字幕| 亚洲黄网站黄| 久久九九免费视频| 欧美有码在线视频| 欧美天天在线| 亚洲精品乱码久久久久久久久 | 欧美精品啪啪| 欧美激情欧美狂野欧美精品| 黄色精品一区二区| 亚洲欧美在线一区二区| 亚洲欧美视频在线观看视频| 欧美激情视频一区二区三区不卡| 久久人人爽人人| 国产婷婷精品| 香蕉视频成人在线观看| 欧美一区二区三区免费大片| 国产精品成人免费视频 | 欧美在线精品一区| 国产精品欧美激情| 国产精品99久久久久久久久| 亚洲新中文字幕| 欧美日韩精品一区视频| 日韩午夜电影av| 日韩小视频在线观看| 免播放器亚洲| 亚洲国产三级在线| 99热在线精品观看| 欧美日韩一区精品| 中国成人在线视频| 欧美在线在线| 国产亚洲欧美一级| 久久久亚洲精品一区二区三区| 美女国产一区| 亚洲欧洲一区二区在线观看 | 亚洲欧美日韩视频一区| 久久成人免费视频| 国内在线观看一区二区三区| 久久精品国产免费观看| 亚洲福利视频二区| 亚洲午夜性刺激影院| 国产欧美日韩综合一区在线观看 | 亚洲乱码一区二区| 亚洲一区二区三区乱码aⅴ| 国产精品久久夜| 性娇小13――14欧美| 久久一本综合频道| 亚洲精品九九| 国产精品美女黄网| 久久亚洲综合色| 99精品热6080yy久久| 篠田优中文在线播放第一区| 黄色亚洲精品| 欧美片在线观看| 亚洲欧美在线一区| 亚洲高清免费在线| 欧美一区永久视频免费观看| 亚洲国产精品电影| 国产精品一区二区三区四区五区 | 亚洲理论在线观看| 香蕉久久a毛片| 亚洲精品视频免费观看| 国产精品视频区| 免费看亚洲片| 亚洲欧美日韩高清| 亚洲激情另类| 久久岛国电影| 中文av一区二区| 伊人色综合久久天天五月婷| 欧美日韩一区二区三区高清| 久久久之久亚州精品露出| 日韩网站在线观看| 欧美高清一区| 久久精品视频亚洲| 亚洲伊人第一页| 亚洲激情在线视频| 国产一区二区三区日韩欧美| 欧美日韩三级视频| 免费日本视频一区| 久久久国产精品一区| 亚洲综合色丁香婷婷六月图片| 欧美成人亚洲成人| 欧美在线视频二区| 亚洲伊人伊色伊影伊综合网| 亚洲精品国产欧美| 亚洲黄色在线视频| 一区免费观看视频| 国产视频不卡| 国产欧美一区二区三区视频| 欧美亚一区二区| 欧美午夜大胆人体| 欧美日韩国产一区二区三区地区 | 久久夜色精品国产欧美乱极品| 亚洲女人天堂成人av在线| 日韩午夜中文字幕| 亚洲美女黄网| 亚洲美女视频| 夜色激情一区二区| 一区二区三区导航| 一区二区冒白浆视频| 日韩午夜在线视频| 在线中文字幕一区| 亚洲午夜精品一区二区| 亚洲一区二区免费在线| 亚洲永久视频| 欧美亚洲免费在线| 久久久午夜精品| 免费成人性网站| 欧美成人按摩| 欧美日韩激情小视频| 欧美三级视频在线播放| 欧美图区在线视频| 国产精品任我爽爆在线播放| 国产精品日产欧美久久久久| 国产日韩精品一区| 黄色成人在线| 亚洲精品免费在线播放| 在线一区二区视频| 亚洲欧美伊人| 久久在线观看视频| 亚洲黄色高清| 在线视频一区二区| 欧美一区二区三区视频在线 | 欧美高清视频| 欧美视频在线一区二区三区| 国产精品欧美激情| 在线成人黄色| 99re这里只有精品6| 亚洲欧美乱综合| 久久久久久久久综合| 亚洲国产美女精品久久久久∴| 一本色道久久综合亚洲精品婷婷| 亚洲一区二区网站| 免费中文字幕日韩欧美| 欧美日韩一区精品| 韩国视频理论视频久久| 日韩亚洲欧美一区二区三区| 小处雏高清一区二区三区| 美女尤物久久精品| 一本色道久久88精品综合| 性亚洲最疯狂xxxx高清| 欧美顶级大胆免费视频| 国产欧美一区二区三区另类精品 | 国内精品久久久久久久97牛牛| 亚洲国产精品电影| 午夜久久久久久| 亚洲国产精品久久久久秋霞不卡| 亚洲一区二区三区777| 玖玖玖国产精品| 国产精品无码永久免费888| 91久久中文| 久久久99久久精品女同性| 亚洲免费福利视频| 久久综合狠狠|