如何快速重寫一份你不了解 組織較差的代碼?(算是代碼整理吧)
01-08
時間大概一星期,matlab,非重複的代碼行數在2000以內,大致功能已了解,代碼分多個文件,涉及互相調用,可以聯繫到原代碼作者,但因為是長輩,不好意思過多打擾~~希望大家給點意見
先對每部分寫單元測試,然後逐部分重構(refactor)。
同意寫單元測試後重構。補充:
遇到老代碼不好重構,也不好加單元測試的時候,推薦閱讀一本書《修改代碼的藝術》,專門講遺留代碼的單元測試和重構問題。
個人經驗很有限,僅供參考:
如果已經亂得沒法寫單元測試了,那從最嚴重的問題開始,逐步解決,比如有重複代碼首先抽取重複部分,不要一開始就急於改良設計。
然後改良部分一定要頻繁地發布或者部署,以便快速發現和解決改寫過程中出現的問題。千萬不要做要一兩個星期才能完成的那種「推倒重寫」,這種情況下如果不頻繁發布,很容易被改寫過程引入的問題重傷。動刀方面盡量都從「漸進」的角度入手改進,小步慢移。
到了結構整理出眉目,函數模塊都隔離的還可以了,趕緊開始補單元測試,此時寫測試也反向對代碼設計提出了門檻和要求——設計良好、模塊職責明確單一、介面正交的代碼更容易被測試。如果熬到這一步了,也即可以開始不動介面重構實現了,差不多就算是解救出來了吧。
因為一個項目即使代碼很爛很爛了,只要項目本身還活著,就一定會有需求的補充加入,導致項目繼續演變。比起凍結需求來改進項目質量,這種頻繁發布和漸進改進都對這種演變更加友好,對項目本身的發展來說傷害更少。http://stackoverflow.com/questions/7421447/call-graph-generation-from-matlab-src-code
推薦閱讀:
※為什麼很多計算機專業碩士生論文編程都是用MATLAB做的,僅僅是科學計算方面的優勢嗎?
※Matlab 2018a 比2017b有哪些改進?
※為什麼同樣的C++函數,在matlab混合編程中調用,和直接在VS2010中調用,計算結果不一致?
※用於數學建模 安裝matlab 2014 需要安裝哪些組件?
※matlab的floor函數是否有bug?