《修改代码的艺术》读书笔记一
一、修改軟件的起因及其本質。
?????? 修改軟件是任何一個開發人員所面對的問題,軟件是否容易修改,被修改后的軟件是否變得更好,是每一個開發人員都知道必須關注但是在實際開發過程中卻往往忽視的問題。有多少人在接手一個新項目時抱怨新項目的遺留代碼質量太低?又有多少人愿意或者說有能力去將一個讓人崩潰的代碼逐步改善? ???
假如你面對著一份只能考慮修改,不能考慮重寫的,但是混亂不堪的代碼,需要將其逐步改善,可能需要細致的研究《修改代碼的藝術》這本書,它的目的就在于:希望能夠將一個已經非常龐大而且混亂不堪的項目從現狀中擺脫出來,讓為這個程序做開發的人員對開發感到安心,而不是擔憂。 ???
這里從書中列出的軟件修改的四個主要起因開始: ?
1.添加新特性。 ?
2.修正bug。 ?
3.改善設計。 ?
4.優化資源使用。 ???
添加新特性和修正bug的含義不難理解,但是有時候因為對需求的理解不同,表面上看上去是修正bug的行為實際對于開發人員來說確實添加一個新特性。關于這一點,這里把這樣一種行為劃分到添加新特性的范圍中,而不認為是修正bug。 ???
改善設計指的是改變程序的結構,令軟件更加容易維護,通常也意味著,我們希望改善設計的過程中不應該改變程序的行為。這種不改變程序行為而改善設計的舉動稱為重構。(書中指出重構背后的理念:如果我們編寫測試確保現有行為不變,并在重構的每一步中小心驗證其行為的不變性,我們就可以在不改變程序行為的前提下通過重構使其更具維護性) ???
優化和重構類似,但是目的卻不同,重構的目標是程序的結構更容易維護,而優化的目標卻是針對程序所使用的資源,比如CPU時間和內存占用等。 ???
一般而言,當對一個系統做修改之后,有三個方面可能會發生改變:結構、功能以及資源占用。為了把上述的bug修改和添加新特性區分出來,我們把功能也分為對舊有功能的修改和新功能。于是綜合起來,我們可以得到一個表格:
| ? | 添加特性 | 修正bug | 重構 | 優化 |
| 結構 | 改變 | 改變 | 改變 | —— |
| 新功能 | 改變 | —— | —— | —— |
| 功能 | —— | 改變 | —— | —— |
| 資源使用 | —— | —— | —— | 改變 |
當然,準確來說,前三種舉動也可能會導致資源使用的改變,但是因這三種情況下資源使用的變化往往只是副作用,所以表中還是列為不變。 ???
在這所有的情況里面,有一點是非常重要的:我們對程序的改動相比我們希望保持的程序行為相比,我們希望保持的程序行為要多得多。所以在對程序修改中,如何保證不導致不想改變的東西被改變,是重中之重。
二、修改中存在的問題
對大部分的開發人員來說,一般并不愿意對軟件進行修改。有了新的需求,需要添加新特性;有了bug,需要做修正;這樣的修改不得不做。但是改善設計提高維護性,大部分人是不愿意的做的。 ???
為什么會這樣?當然不是因為開發人員懶,那么多的代碼都寫了,沒道理不愿意為了以后維護方便,多寫一些。關鍵在于,我們都擔心只是為了改善結構的修改行為,對系統造成了嚴重的破壞。 ???
“避免修改”算是我們對于已經跑在線上的程序的一種降低軟件問題的策略。“既然跑的好好的,那還是別改了”。如果一個程序永遠不用改動,那或許這種策略有一定的可行性。但是,除非對于一個已死的項目,改動總是不可避免的。當團隊每次都以看上去最簡單的方式將新代碼添加到系統中,原有的方法、原有的類就會越來越龐大,修改的難度也會越來越大,最終造成質量不斷下滑。
?
轉載于:https://www.cnblogs.com/ustc-huomiao/p/8830264.html
總結
以上是生活随笔為你收集整理的《修改代码的艺术》读书笔记一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器怎么安装和设置 安装后如何设置无线
- 下一篇: (转载)浅谈线段树