有時候,當一個重要的項目進展不順利時,就有了從新開始的願望。有時這來自管理層,但一般來自開發人員本身。他們說,若是他們只有第二次機會,而且能夠從新開始,那麼他們能夠創建正確的系統。程序員
但這幾乎從未發生過。從我這拿走。我見過公司屢次嘗試,我能夠毫無例外地說,當一個團隊開始用基本相同的方法重建相同的系統時,他們最終會獲得大體相同的系統,包括一樣的問題只有這個他們必須維持兩個系統的時間。編程
傳統代碼獲得了糟糕的說唱。人們懼怕接觸它,但它體現了通過時間考驗的業務規則和程序,即便最棘手的遺留代碼在用於重構系統時仍然具備價值。安全
重構也很糟糕,由於開發人員和管理人員都不熟悉它。他們不知道有一種安全的方法來重組他們的「泥球」,他們的軟件已變成更易於管理的塊,這些塊能夠獨立驗證,所以維護和擴展的成本更低。架構
重構遺留代碼一般是打破它的過程。它可能已通過程編寫而且工做良好多年,可是,爲了改進構建並支持持續集成,代碼須要分解爲可獨立驗證的部分。負載均衡
別擔憂。困難的部分結束了。該軟件作了它須要作的事情,因此重構它實際上只是重組它的問題。這並不意味着它不容易或沒有風險,但有辦法解決出現的問題,並且這些變化帶來的好處每每能給公司帶來競爭優點。模塊化
能夠這樣想,大多數軟件都是程序性編寫的,而且採用全局視角。這對於簡單的程序來講很好,但隨着系統的複雜性不斷增長,咱們須要一種方法來管理這種複雜性。測試
面向對象編程爲咱們提供了一種管理複雜性的方法,它經過採用咱們想要建立的行爲並將其放在一個「對象」集合中,這些對象能夠交互以建立該行爲。大數據
經過這樣作,咱們將系統的不一樣部分彼此隱藏起來。面向對象程序不是具備一個全局視角,而是由一組對象組成,這些對象相互做用以建立所需的行爲。3d
經過將行爲封裝到正確的對象中的額外步驟,咱們容許咱們的系統經過自動化變得更加模塊化和獨立可測試,這下降了咱們生產的軟件的變動成本。orm
在大多數狀況下,這毫不是一件容易的事。你的遺留代碼從多年的疏忽中獲得了這種方式,它可能須要一些努力來清理它,但若是它已經作了正確的事情那麼一般是重組和重組代碼的問題因此它在不一樣的地方但功能仍然存在相同。從新組織代碼一般比從頭重寫代碼更直接。
————————————————————
推薦閱讀: