一方面在企業(yè)級系統(tǒng)開發(fā)(數(shù)據(jù)密集、業(yè)務(wù)規(guī)則復(fù)雜多變)中,C++已經(jīng)基本被Java和C#等淘汰出局,另一方面在系統(tǒng)編程和嵌入式等更接近硬件的領(lǐng)域,又遭到C的強(qiáng)烈狙擊。
如果在你的應(yīng)用中,有兩個需求同時發(fā)生,你就必須要考慮采用C++,第一是對性能的要求要高,還有一個是有很強(qiáng)的抽象和建模能力。
--
專訪Andrei Alexandrescu:對C++要有信心 保持樂觀好的C++代碼就是高效的、安全的、清晰的代碼。
第一準(zhǔn)則:將C++用在合適的地方,C++最適合用來開發(fā)“高性能的復(fù)雜組件”。
第二準(zhǔn)則:選擇了C++,就等于選擇了C++的不安全性,請適應(yīng)這一點,不要試圖把C++變成另一個Java。
第三準(zhǔn)則:按過程思考問題、按對象寫代碼,抽象化和模塊化(接口)放在首位,其次才是復(fù)用性。
(保證代碼安全的首要因素是抽象化、模塊化,其次是設(shè)計規(guī)范性和代碼規(guī)范性,最后才是智能指針等語言工具)
第四準(zhǔn)則:按設(shè)計思路變更代碼,不要按代碼改代碼。
第五準(zhǔn)則:按編程范型做設(shè)計、按模式和規(guī)范書寫代碼。(范型是在充分理解問題域的基礎(chǔ)上,對問題域作出合理的約束)
第五準(zhǔn)則:復(fù)用性沒有想象中重要,重復(fù)的理由之一是復(fù)雜,不要為了消除重復(fù),讓系統(tǒng)變得更復(fù)雜、更難以理解。
第六準(zhǔn)則:保持代碼可靠的辦法是時間,好的代碼是累積出來的,請用好代碼版本管理工具。
第七準(zhǔn)則:閱讀、復(fù)查代碼是發(fā)現(xiàn)bug的最有效的方法,請在單元測試之前、之后各做一次。
第八準(zhǔn)則:請編寫單元測試,它是發(fā)現(xiàn)常規(guī)bug的最可靠、最廉價的方法。
第九準(zhǔn)則:請慎重使用智能指針、異常、模板,它們在解決問題的同時往往也引入了復(fù)雜性,必須對此作出權(quán)衡。
第十準(zhǔn)則:請使用斷言、日志、轉(zhuǎn)儲、調(diào)試工具,它們是解決bug的最后防線。
第十一準(zhǔn)則:請在不影響性能的前提下,盡量使用C++標(biāo)準(zhǔn)庫中的字符串、流、容器、算法等,編寫安全、可靠的代碼。
第十二準(zhǔn)則:盡量使用優(yōu)秀的開源項目組件庫。