寫C++程式要清楚自己的角色(孟岩)

來源:互聯網
上載者:User
今天跟一些朋友在信件裡討論C++的使用。一個還在學習C++的朋友,認為要把重點放在虛函數、多態性、STL上。我認為學習的時候這樣考慮肯定是對的,但是真正開發的時候,不能因為你掌握了OO、generic這些先進武器,就非要用上這些東西,以示區別不可。謹慎合理地使用語言的機制是開發良好C++程式的關鍵,至少在心態上是關鍵。下面是信件內容的摘選:

你寫C++的時候,一定要想清楚,你是在做基礎設施還是在應用。如果是基礎設施,比如類庫、架構、底層功能的classwrapper,那麼可以允許你大膽地使用C++中的各種技巧,關鍵的要求是你得暴露出來一個clean的interface,讓別人好用。這一點並不容易,特別是有的時候你覺得很好用的介面人家就覺得很彆扭。所以比較省心的做法就是把介面設計成流行的風格。比如模仿STL的風格,模仿Java的風格,模仿COM的風格,甚至模仿MFC的風格,可能都比你自己發明一種新風格要“好用”。

可是做應用開發的時候,手就要把緊點,別自鳴得意地濫用進階技巧。應用開發很大程度上受基礎設施的制約,總的來說,使用函數、POD對象、concreteclass,從framework中派生出來的class,再加上一點點用來節省打字的template,足以滿足應用開發的需要。特別是當你的下面沒有很完備的classlibrary或者framework的時候,千萬不要一邊寫應用,一邊又想著怎麼讓自己的這些東西“為萬世開太平”,那樣的話很容易就會把程式結構作的過於複雜。最後往往是應用沒寫好,也沒有可複用性。以前我沒有經驗的時候,最容易犯的錯誤就是這個。

做基礎設施的開發,那叫“設計”,是要為以後考慮的,為了長遠利益可以犧牲眼前的進度、簡單性。可是做應用,那眼前利益是第一位的,你先把手頭的東西又快又穩地run起來,才談得上以後有複用的可能。眼前的東西作的一塌糊塗,說裡面有的模組設計得超級棒,絕對能複用,你自己都不相信。代碼要一絲不苟,該寫注釋寫注釋,該寫assert寫assert,該怎麼樣怎麼樣,不能因為想著“反正也就是一鎚子買賣”就馬馬虎虎。至於能不能複用,那是以後的事情。所謂Designfortoday,codefortomorrow,就是這個意思。


Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=754239

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.