Bjarne Stroustrup(BS)博士在 The C++ Programming Language(Special Edition)中對讀者的忠告1(摘抄) (轉)
Bjarne Stroustrup(BS)博士在 The C++ Programming Language(Special Edition)中對讀者的忠告(摘抄)
:namespace prefix = o ns = "urn:schemas--com::office" />
第1章 致讀者
1. 在序時,你是在為你針對某個問題的解決方案中的思想建立起一種具體表示。讓的結構儘可能地直接反映這些思想:
a. 如果你能把“它”看成一個獨立的概念,就把它做成一個類。
b. 如果你能把“它”看成一個獨立的實體,就把它做成某個類的一個。
c. 如果兩個類有共同的介面,將此介面做成一個抽象類。
d. 如果兩個類的實現有某些顯著的共同東西,將這些共性做成一個基類。
e. 如果一個類是一種物件的容器,將它做成一個模板。
f. 如果一個實現對某容器的一個演算法,將它做成為對一族容器可用的模板函式。
g. 如果一組類、模板等相互之間有邏輯聯絡,將它們放進一個名字空間裡。
2. 在你定義一個並不是實現某個像矩陣或複數這樣的數學物件的類時,或者定義一個低層的型別如連結表的時候:
a. 不要使用全域性資料(使用成員)。
b. 不要使用全域性函式。
c. 不要使用公用資料成員。
d. 不要使用友元,除非為了避免a或c。
e. 不要在一個類裡面放“型別域”(指那種為了說明一個類所資料的情況而放置的標誌域) ;採用虛擬函式。
f. 不要使用線上函式(inline function),除非作為效果顯著的。
第 2 章 C++ 概覽
1. 不用害怕,一切都會隨著時間的推移而逐漸明朗起來。
2. 你並不需要在知道了C++的所有細節之後才能寫出好的C++程式。
3. 請特別關注技術,而不是各種語言特徵。
第 3 章 標準庫概覽
1. 不要像重新發明車輪那樣企圖做每件事;去使用庫。
2. 不要相信奇蹟;要理解你的庫能做什麼,它們如何做,它們做時需要多大的代價。
3. 當你遇到一個選擇時,應該優先選擇標準庫而不是其他的庫。
4. 不要認為標準庫對於任何事情都是最理想的。
5. 切記#include 你所用到的功能的頭。
6. 記住,標準庫的功能定義在名字空間std之中。
7. 請用string,而不是char*。
8. 如果懷疑,就用一個檢查區間範圍的向量(例如Vec)。
9. vector
10. 如果向一個容器中新增一個元素,用push_back() 或 back_inserter()。
11. 採用對vector的push_back(),而不是對陣列的realloc()。
12. 在main()中捕捉公共的異常。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977165/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RBE104TC C/C++ Programming LanguageC++
- 死磕The Swift Programming Language——學Swift
- golang programming language study methods websocketGolangWeb
- 《The Rust Programming language》程式碼練習(part 1 基礎部分)Rust
- Java Language Features, 2nd Edition.pdfJava
- 1901:The C programming language !(C語言)C語言
- 《軟體工程思想》讀書摘抄 Part 1軟體工程
- 2018.09.22 上海大學技術分享 – An Introduction To Go Programming LanguageGo
- 【Programming in Lua1-7章】讀書筆記筆記
- 《The Rust Programming language》程式碼練習(part 2 進階部分)Rust
- 《The Rust Programming language》程式碼練習(part 3 簡單web )RustWeb
- 《The Rust Programming language》程式碼練習(part 3 簡單web server)RustWebServer
- special ?&#
- c++中的讀寫鎖C++
- 《Programming from the Ground Up》閱讀筆記:p1-p18筆記
- Swift之旅_Language Guide1SwiftGUIIDE
- C++中的輾轉相除法C++
- C++(1) gps轉換為enuC++
- 淺談Python中的bs4基礎Python
- 在SAP HANA Express Edition裡進行文字分析Express
- 贏在中國2022:應對之策解讀篇
- LeetCode C++ 376. Wiggle Subsequence【Dynamic Programming】中等LeetCodeC++
- 科技愛好者週刊(第 308 期):工作找不到,博士能讀嗎?
- 【人工智慧】想要入坑機器學習?這是MIT在讀博士的AI心得人工智慧機器學習MITAI
- Pixel Aligned Language Models論文閱讀筆記筆記
- 開源Go語言數值演算法庫 An open numerical library purely based on Go programming languageGo演算法
- C++對C語言的擴充套件(1)--引用C++C語言套件
- c++中數字和字串的轉換C++字串
- C++ 表示式中的型別轉換C++型別
- 好書精讀:CEO在數字化轉型中的行動指南
- 在SAP HANA Express Edition裡建立資料庫表Express資料庫
- 邦芒忠告:職場男性在辦公室的10個禁忌
- Aluma Insights:1/6的成年SVOD使用者在應用之間不斷跳轉
- 給數學新手的忠告
- 論文閱讀-RankME: Reliable Human Ratings for Natural Language Generation
- 論文解讀《MASTERKEY: Automated Jailbreaking of Large Language Model Chatbots》ASTAI
- C++中string、char *、char[]、const char*的轉換C++
- 聰明的投資者讀書筆記1筆記
- C++中單例模式和static的對比C++單例模式