收到學弟們的一些C++學習筆記,很有感觸。C++語言是一門很宏大奇妙的電腦語言,回顧自己學習與研究C++的經曆,很漫長、很艱辛也很有樂趣。總結這些年的經曆,對於C++的學習有如下建議:
- 遵循C++代碼編程規範。經過近三十年的發展,C++已經有了一整套的代碼編程規範,如private variable的命名方法,類的命名方法,代碼編寫格式等。網路上有類似的文章下載,圖書館也有《C++編程規範(中文版)》(ISBN:7-115-14205-X)可以參考。要儘可能地在編程訓練中加強編程規範的練習,這樣進入工程團隊中方能更好地與別人進行代碼溝通。
- 採用Doxygen格式進行代碼注釋。這也是代碼規範的一個重要方面。在編寫注釋時,也要採用標準格式,這樣可以通過Doxygen來自動產生代碼文檔。
- 要將類封裝每個範例。許多參考書中的範例很少採用類來進行封裝,而仍是採用函數。這並不是C++所提倡的。應該將每個範例都寫成類的形式,由main程式來進行類執行個體建立後調用類操作完成。對於小範例來說,這會增加不少的編程工作,但只有這樣才能更好地瞭解類的調用機制,與參數傳遞方式。“類的組合與函數的組合是完全不同的”,因此只有不斷地用類,而非函數,才能真正提高自己C++的功力,更確切地說是提高C++在物件導向編程方面的功力。
- 要熟悉標準C++技巧。許多參考書的範例代碼中,其實存在三種不同的語言,大部分是C,一部分是託管C++,而只有極少數的是標準C++。例如你在讀取檔案時採用了純C的方式,而不是標準C++的方式。標準C++是通過fstream來進行檔案訪問的。這說明你所參考的書籍作者並沒有能釐清上述語言的差異。要真正掌握C++,並能編寫出移植性高的程式,只有花力氣在標準C++的學習上。《C++ Primer》與《Thinking in C++》是最好的參考。
- 要學習單元測試技術。一般初學者往往採用注釋的方式將測試通過的代碼注釋掉。這樣的方式最簡單,但最不能在多人合作的項目中使用,因此是一個很不好的編程習慣。要學習利用CppUnit或者MiniCppUnit等庫來進行單元測試,這樣既不用注釋代碼,而且能自動化單元測試,是最符合軟體工程的編程習慣,一定要花些時間來學習。
- 要通過執行個體學習泛型技術。根據我的經驗,容器與泛型是C++中相當難於掌握的內容,如果沒有很好的範例,只停留在理論說明上,是很難深刻領會的。因此要對泛型技術有所瞭解,應該從開來源程式中來進行學習。雖然C++中最好的泛型庫是Boost C++ Libraries,但我並不建議從Boost入門。我更推薦TCLAP庫。TCLAP庫是用來解析命令列參數的,就是將 int main( int argc,char** argv)中的argv參數進行解析,獲得一系列的參數值。這個庫很有用,且其代碼都是採用泛型技術編寫的,很精巧,適合閱讀!先參考examples 目錄中的範例,編譯後學習 TCLAP 的使用,然後再閱讀其代碼。只有這樣方能真正理解為什麼要用泛型,泛型思想與物件導向思想之間存在哪些本質性的差異。
希望上述建議能對C++學習有所協助。如有什麼學習心得或者困難,請Gmail給我。我很樂意與你們一起研討C++技術。