如何從學術原型代碼拓展成工業級別代碼?

發paper的代碼一般多是quick and dirty, 如果說一個方法很好,希望把整個代碼做好做健壯,一般要經歷哪些步驟?

比如:啥是工業標準,有沒有實例?


重寫


把paper看完丟在一邊,直到三個月之後把代碼忘乾淨,然後根據記憶按照工業標準重新寫一遍。

記憶力減退者可酌情縮短遺忘時間。如果像我一樣嚴重健忘,看完paper就忘了代碼長什麼樣,就能直接投入工業應用了。


補設計文檔

補代碼注釋

統一代碼風格

補單元測試(原來的代碼可測試性差 --&> 重構)

補集成測試

補端到端測試

(視情況補負載測試,AB測試,冒煙測試等)

上版本管理系統

上持續集成系統

上bug跟蹤系統


學書上的代碼:對處理的數據很多時候只是特定的,代碼易讀性差,注釋量嚴重不足,實驗室每個人代碼風格不一樣,代碼偏向過程。沒有對應技術手冊,演算法類的代碼沒技術手冊基本沒法看。

工業用的代碼:不同人代碼風格基本保持一致,演算法易剝離,注釋清晰,易於維護,基本都是面向對象。文檔完整,包含技術路線,參數設置,測試結果等等。

所以照著工業用的代碼風格寫吧。


去公司里跟個項目小組,寫幾個月代碼,然後回頭看著「學術原型代碼」,重寫一遍……


做成公開的網路服務,推廣下,讓更多人使用。這時候問題就層出不窮了。


不用重寫,直接重構就可以。注意排版,命名,縮進,消除所有告警。然後,最重要的兩條,每個函數在五十行以內,最好是三十以內。禁止全局變數。全局來說,合理劃分文件結構,用一個大結構體或類組織所有數據,大類包小類,一層層包裏。

另外,臟代碼並不快,實際會更慢。


推薦閱讀:

C++語言有什麼方便的GUI開發框架?
程序員面試,面試官更注重代碼量、項目經驗還是操作系統、數據結構這種基礎課程?兩者比例是五五開還是多少?
醫學生空閑時間學編程,是VB國二基礎,有沒有什麼好的建議?
Python 中有哪些性能優化方法?
想要系統學習演算法,斯坦福大學開設的MOOC課程《Algorithms: Design and Analysis》合適嗎?

TAG:互聯網 | 編程 | 軟體工程 | Java | C |