1. 程式人生 > 其它 >有什麼高質量的現代 C++ 風格的開原始碼?

有什麼高質量的現代 C++ 風格的開原始碼?

攜程旅行網 資深研發工程師

很多答案推薦的開原始碼都是大部頭,說說我學習現代 C++ 的程式碼的經歷吧。

我們說的現代 C++ 風格,一般指的是 C++11 及之後的 C++版本,目前比較實用且得到大多數編譯器支援的是 C++11/14/17 標準。

1. Filezilla

2016 年的時候,我無意中發現我用了多年的 FTP 軟體 Filezilla 竟然用 C++ 11 重寫了。

Filezilla介面

FileZilla 的原始碼是一個德國開發者寫的,其程式碼質量也不錯,而且使用的是 C++11 寫的。可以一邊除錯一邊學習,學完後,我的 C++11 功能得到了大大增強。

不怕你笑話,我在上學的時候,曾看過 Filezilla 0.x 版本的程式碼,那個時候 UI 介面用的還是 MFC。

貼一下 Filezilla 的部分程式碼,紅框標出來的部分為 C++11 的語法特性:

程式碼質量總體很不錯。我修改了下讓其可以在 Visual Studio 中除錯,這樣你可以一邊除錯一邊學習。

一套原始碼如果能夠容易編譯、除錯,同時其業務是容易理解的(通俗地說,就是這套程式碼的功能是什麼的),那麼才利於新手學習。

我已經將環境和依賴都配置好了,程式碼獲取連結:

張小方:分享一款 ftp 軟體 —— filezilla的原始碼

2. uWebSocket

uWebSocket 是一款開源的 WebSocket 庫,最新版使用了大量 C++17 的語法,程式碼量非常少。

下載地址:

我們改造了這個專案,用於我們的交易系統的行情推送伺服器。

3. TeamTalk 的 PC 端

TeamTalk 是蘑菇街開源的一款用於企業內部的即時通訊工具,其程式碼下載地址是:

學習方法

C++11/14 網上的資料已經很多了,C++17 的資料不多,重頭戲還是 C++11 引入的各種實用特性,這就給讀者推薦一本我讀過的:

  • 《深入理解 C++11:C++11 新特性解析與應用》
  • 《深入應用 C++11:程式碼優化與工程級應用》
  • 《C++17 完全指南》
  • 《Cpp 17 in Detail》

網上有同學分享出來了:

連結:密碼: gqnr

我在我自己的《C++伺服器開發精髓》一書的第一章和第三章中也詳細地介紹了 C++11/14/17 新增的常用特性和實用方法,有興趣的讀者也可以閱讀一下。

只收藏不點讚的都是耍流氓,關注我

@張小方 哦~ 漫思