开发与重构
軟件開發過程主要追求的是高效、易于維護。
高效開發體現了代碼的復用率即開發效率,是為了縮短開發周期。
易于維護體現了代碼的重構效率,是為了縮短維護周期。
編程語言,從C到C++,實現了從函數復用,到類復用。其實編程語言的更新換代過程,就是提高代碼復用率的過程,即解決開發效率的問題。
注:還有一些其他類型的技術,都是為復用而生,如動態庫,組件等。
開發語言偏向于解決開發效率的問題,而重構效率和開發效率幾乎是一對成反比的變量。例如,使用C++開發時,如果只考慮提高代碼復用率,那么在需求改變的時候,已有的架構很難適應新的需求,重構的任務很可能變得艱巨。C++開發相對于C開發過程,潛在地會有更多的代碼重構工作。
例如,類的繼承本來是一種提高復用性的手段,但是如果這種方法被濫用,會導致類的繼承關系十分復雜,且十分固定,類與類之間的耦合性高。一旦產生修改需求,將會帶來巨大的工作量。所以,有的特性并不是使用的越多越好,而是需要使用者根據實際情況制定使用方案。在一些需求固定的地方,如windows的界面開發框架,結構固定,運行方式百年不變,就特別適合用C++進行封裝,特別是適合使用繼承、多態等特性。
為什么需要重構?重構的動機是什么?
根據二八定律,軟件代碼中,有20%的代碼占用了80%的軟件運行時間。我們稱20%的代碼成為熱點代碼,80%的為冷代碼。
隨著需求的改變,某些功能模塊/類的使用頻率是會隨之變化的,即有的代碼變成冷代碼,有的代碼變成熱代碼。功能模塊的使用頻率發生改變,會導致兩方面的問題:
1.開發效率降低。
新的需求如果繼續使用已有的模塊,而已有模塊的實現方式下的代碼重用率不是很高,這就導致在新需求下的開發效率會降低。
例如,為了實現相同的功能,未使用訪問者設計模式編寫的代碼,在使用頻率高了以后,相對于使用訪問者設計模式下編寫的代碼更多,代碼的重用率更低。首先在開發階段就會導致開發效率變低,因為要寫更多的代碼。其次在后續的重構時,會因為相同的代碼在多個地方分布,多個地方都要修改,導致修改的工作量更大。
2.運行效率降低。
有的模塊的初始實現,可能并沒有做很好的優化。在訪問率提高后,效率問題將逐漸被放大。這時就會產生重構需求。如模塊間的通信效率,數據解碼效率等,需要更加高效的數據結構與算法來重構,以提高運行效率。
軟件行業的任何層面都存在重構。需求變化越頻繁的部分,重構越多。需求越固定的部分,重構越少。
如何理解設計模式?設計模式是為了解決什么問題?
使用設計模式是為了從軟件開發的一開始,就通過人為分析現有需求,預測未來需求,對軟件各個功能模塊進行最優化設計,以期減少當前開發工作量和應對需求變動工作量的目的。如果一個項目急切開展起來,雖然初期開發速度快,但是可能會對后期軟件的維護帶來麻煩。
設計模式只是解決上述問題的方法和經驗。應從代碼重用即開發效率和運行效率的角度出發,理解每一種設計模式。
另外使用何種設計模式,由具體需求和預期的需求決定。使用設計模式有一定的使用成本,包括時間成本和過度設計的風險,要謹慎使用。
量化
如果能夠將軟件開發本身的一些指標進行量化,并且在量化后進行最優計算,最終實現自動化的軟件設計模式的話,程序員就可以將更多的精力放在業務實現上,而非代碼維護上。自動化的軟件設計將允許人們設計規模更大、功能更復雜的軟件系統,真正實現軟件生產力的提高。
總結
- 上一篇: python做excel表格代码_pyt
- 下一篇: Qt应用程序发布:Qt应用程序添加版本版