程序員修煉之道系列 - 愛上你的代碼

Hanks.Wang - 專注於操作系統與移動安全研究,Linux/SELinux/SEAndroid/TrustZone/Encription/MDM    Mail - [email protected]


愛上你的代碼


作爲程序員的你愛上你的代碼了嗎?爲什麼要愛上你的代碼?你問過自己這樣的問題嗎?

程序員同學不管是使用C/C++/Jave/C#/Perl/Python語言還是R或者Go語言,你的代碼就是你的智慧與高質量思考的產物,不管這個產物是一次性過程的產物還是反覆性的工作結果,你的代碼既是你的孩子又是你的女朋友。

信息技術行業的社會化分工非常精細,於是出現了售前售後技術支持工程師、需求分析工程、產品經理、項目經理、研發工程師、測試工程師、架構師、技術總監等等的崗位,不管是在技術路線上垂直髮展還是從技術路線跳躍到管理路線,只要當下正在經歷的階段是和開發工作相關的,你沒有理由不愛上你的代碼。代碼是你產品化過程中很重要的一部分,甚至可以說是主要部分。如果你不愛你的代碼,你的客戶又怎麼會愛上你的產品呢?

代碼的用戶
什麼是用戶?我不記得是哪位大拿對用戶的定義了,核心的理念是用戶包括直接和間接使用你產品的人,你的代碼會被什麼樣的人接觸到,他們都是你的用戶。即使你是開發工程師,你也是有用戶的,所以程序員們要自豪一點,每天你都有很多用戶,這寫用戶包括給你做測試的測試工程師,調用你邏輯接口的其他代碼片段實現人員,幫助你維護代碼的工程師們......你的代碼功能性不可測試,你對不起你的測試人員;你的代碼別人調用不夠輕便,你對不起其他開發的兄弟們。所以寫出高質量的代碼是作爲軟件開發工程師的份內事情,而不是僅僅實現需求。

高質量的代碼
好的代碼要求運行效率高,層次結構優化,維護成本低;而壞的代碼運行態資源佔用率高,構架設計不合理,維護人員覺得晦澀難懂。有沒有BUG或者BUG率已經不是一個高級的軟件開發工程師應該頭痛的問題了,較低錯誤率是門檻,如果這點還沒有做到,說明基本功還沒有打好,還需要繼續努力。
寫代碼的時候注意代碼的簡潔與可重用性,起碼自己看來是件藝術品,即使可能還有很多瑕疵 :) 這一點要求工程師對自己使用的語言要有相當的瞭解,如何優化自己的代碼。開發語言只是我們開發項目的工具,很多人討論是C好呢還是C++好呢,然後使用JAVE的人開始笑了 大笑 世界上每過一定的時間就會有新的開發語言橫空出世,現在被使用的開發語言是比較經典的。當然在我眼裏經典的開發語言沒有優劣之分,只是各自適應的場景不一樣罷了。C語言被很多人說是面向過程的語言,但是用C照樣可以寫出面向對象的項目,Linux Kernel中協議棧和內存管理的C語言實現就是最好的證明。

提高自己的代碼質量
答案是多看高質量的代碼,去哪找高質量的代碼呢?身邊的同事的代碼寫的和我差不多,那就去看看Kernel或者GNU的代碼吧,仔細的研究兩年,寫代碼的能力會提高很多,磨刀不誤砍柴工。另外多思考,自己沒寫一部分代碼的時候,評估一下自己的代碼,邏輯是不是很清晰,自己喜不喜歡,如果一時半火沒有反應,那說明自己對自己的代碼不滿意。不管是自己的自負也好,還是不願意否定自己的能力也好,好的結果是代碼有改進的空間!

測試程序與代碼質量的關係
很多時候我們都會寫各種測試程序,一般情況下單元測試只能解決功能性問題,但是高質量的代碼不能僅僅侷限在功能性的層面上,性能如何?另外不能指望依賴測試程序來提高代碼質量,代碼質量的提高是在寫代碼的過程中完成的,而不是在測試之後.

代碼重構的意義
代碼是不是真的需要重構?答案基本是肯定的。項目進度在50%左右的時候是重構的好時機,在50%左右完成度的時候正好是對項目進行反省和避免嚴重錯誤的時候;代碼完成度在100%之後,應該找適當的時候再次重構。寫完代碼就立即重構嗎?答案是否定的,代碼是短暫思維的反映,今天寫的代碼過兩天再看就不能完整的回憶起當時是怎麼思考的。所以一般情況下我更習慣於隔幾天再重構代碼。對於使用了幾年的代碼仍然有需要重構的可能性,幾年之前的代碼很有可能不再適用與當前的體系架構。

總之,要熱愛自己的工作,熱愛自己的代碼。隨着年齡的增長和工作經驗的豐富,對問題抽象的能力不斷的提高,程序員就不是青春飯了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章