轉載時請註明出處和作者連絡方式:http://blog.csdn.net/mimepp
作者連絡方式:YU TAO <yut616 at sohu dot com>
大學畢業,自己動手寫的代碼沒超過百行,是不是大有人在?看了不少代碼,但一動手,處處出錯。
為了在大學學習結束時,能給自己積累些實際的軟體開發經驗,對很多同學來說真正動手寫一些代碼,並按一定的品質要求做出來的東西,會給你今後的工作巨大的協助。
但一般你又沒有一個明確的目標要去做什麼事情,從何開頭。
這裡會列舉一些能供你動手的項目,如果你真的實現了這些項目裡面的功能,那麼國內中上公司的大門基本就是為你敞開的了。
一、面向的對象:
對 linux 軟體開發或者是嵌入式系統 linux 開發有興趣的同學。
linux + C 語言。
二、代碼規範:
1、遵循 linux kernel coding style:
http://lxr.linux.no/#linux+v3.0.4/Documentation/CodingStyle
2、代碼編譯前,仔細閱讀,盡量保證一次編譯成功
反覆這樣練習,你能做到這一點。
別把你的代碼編輯錯誤交給編譯來檢查。
代碼編譯前多花十幾分鐘,讓邏輯在你大腦中運行看看,有哪些例外沒有檢查到。
出現問題後,調試所費的時間要比這個時間大得多。
如果你寫的代碼,能達到和用 Lindent 格式化出來的效果一致,那麼就很 OK 了。
Lindent 參考:
http://blog.csdn.net/mimepp/article/details/2224814
寫一手優雅的代碼很重要。
3、提交代碼時用格式模板
代碼提交 svn check in 格式模板,參考:
http://blog.csdn.net/mimepp/article/details/6838545
三、項目如何管理:
1、在 google code 上註冊你自己的項目
用 open source 的方式來管理你的項目,如 svn, wiki, bug report 等。
你所做的事情都會留下記錄,別搞“踏雪無痕”。
2、在 google code 上寫 wiki,記錄你的設計思想,開發技術點,寫 memo
好的代碼是設計出來的,不是調試出來的。
memo 可以包括:問題描述,問題分析,問題解決,所做的測試,TODO list
寫 memo 有助於培養你的表述能力,並留下記錄。好記性不如爛筆頭。
3、用 UML 工具畫出你的整體架構圖,主要模組的順序圖表,貼在你的各個 wiki memo 裡
UML 是工程師之間交流的語言,你能很專業的畫出這些 UML 圖,對以後的工作會有很大協助。
可用的 UML 工具如 JUDE :
http://blog.csdn.net/mimepp/article/details/2058170
4、項目上,每周給自己設立一個功能目標,並努力在這個時間點一定要完成
以後的工作上,你的 credit 就是這樣能按時按質完成 task 建立起來的。
要知道實際工作中的開發都是有時間壓力的。
目標確定後,在這個時間點之前,不要走到其他無關的模組上去,也就是說不要跑偏了。
5、事情都在 linux 下做
可以用ubuntu linux,不是讓你用虛擬機器裡跑一個 linux 喲,而是直接在你的機器上只裝 linux,而沒有其他。
堅持在 linux 下做事。
你如果想真正成為一個 linux 開發人員,你需要用 linux 下的方式來思考問題。
可別老是用 windows + source insight,這個不合格。
四、調試工具:
1、gdb
x86 下用 gdb 調試你的代碼中的 crash,這個應該一定會發生。
2、valgrind
x86 下用 valgrind 來檢查你的代碼的記憶體泄露問題,這個也一定會發生。
可以參考:
http://blog.csdn.net/mimepp/article/details/4197340
3、gdb server
學著用用。
五、態度
足夠認真,足夠耐心,測試足夠多。
可能一個具體的動手項目會花你幾個月甚至一年的時間,但花費時間真正做好一個項目,並把它堅持做到極致,會有意想不到的收穫。
所謂做得完,做得好,還要做得漂亮。
要知道工作後,在開始的頭幾年裡,你可能都是在維護老的代碼,修修補補,都沒機會自己設計一個完整的功能或者模組。
代碼寫到一萬行,你就能看到自己的變化了。