前言
最近在對公司的一個已有客戶端進行bug的修復(fù)以及功能的擴展開發(fā)。很不愉悅的一件事情是死相,當(dāng)看到一個很小很小的bug融求,例如Label的背景顯示出問題了,Label的字體大小不符合文檔要求算撮,我們最直接的想法應(yīng)該就是找到這個Label的相關(guān)代碼段生宛,進行一兩處代碼的修改應(yīng)該就能簡單完事了县昂。然而就是這么簡單的bug,我至少修改了十幾處代碼陷舅!十幾處倒彰!十幾次啊@痴觥4洹(重要的事情講三遍!)原因是什么呢仰剿?無疑是代碼抽象層次太低创淡,復(fù)制粘貼代碼太多!太多南吮!太多了琳彩!
淺談軟件體系結(jié)構(gòu)與軟件設(shè)計模式
在《軟件體系與設(shè)計》一書中,軟件體系結(jié)構(gòu)定義如下:軟件體系結(jié)構(gòu)意指“軟件的整體結(jié)構(gòu)和這種結(jié)構(gòu)為系統(tǒng)提供概念完整性的方式”部凑;設(shè)計模式定義如下:設(shè)計模式描述了在某一個特定場景與可能影響模式應(yīng)用和使用方式的“影響力”中解決某個特定設(shè)計問題的設(shè)計結(jié)構(gòu)汁针。眾所周知的,當(dāng)下常用的設(shè)計模式有MVC砚尽,MVVM,MVP等辉词,MVC已經(jīng)是個老生常談的設(shè)計模式了必孤,現(xiàn)在也在逐步被其他設(shè)計模式,例如MVVM瑞躺,MVP所替代敷搪。這幾個設(shè)計模式具體是什么,有什么不同幢哨,我就不說了赡勘,谷歌,百度一下捞镰,一搜會有一大堆的文章介紹這些模式闸与,畢竟是當(dāng)下流行的東西。各位看客在這里只需要簡單知道岸售,雖然軟件的規(guī)模越來越大践樱,程序越來越復(fù)雜,MVC已經(jīng)不能滿足要求了凸丸,為了進一步降低耦合度拷邢,開發(fā)出更加高質(zhì)量的程序就不能再繼續(xù)使用老牌的MVC了。一個良好的設(shè)計模式屎慢,可以有利于我們開發(fā)出結(jié)構(gòu)清晰瞭稼,后期利于長期維護以及功能擴展的軟件忽洛,也有利于在開發(fā)過程中快速構(gòu)建開發(fā)軟件。
模塊化
除了要有良好開發(fā)模式环肘,另外一個不得不談的就是模塊化欲虚。所謂模塊化,可以理解化一個簡單的構(gòu)件廷臼,這個構(gòu)件可以是一個圖形的組件苍在,或者一個處理數(shù)據(jù)邏輯的單元。比如一個圖片輪詢播放的組件荠商,或者是一個處理網(wǎng)絡(luò)請求的庫寂恬。最簡單的理解應(yīng)該是模塊與模塊之間應(yīng)該是相互獨立,信息隱蔽莱没,高聚合度初肉,低耦合度,只通過簡單接口進行交互的饰躲。
抽象
要想模塊化就必須要學(xué)會抽象牙咏。一個抽象可以簡單理解為只單純負(fù)責(zé)處理一件事情的方法、類或者過程函數(shù)嘹裂。一個理解抽象時機的簡單方法是妄壶,如果你在寫代碼的時候還在使用復(fù)制粘貼,或者還在一處又一處的碼著重復(fù)的代碼寄狼,那么你就該思考一下你有沒有必要把重復(fù)的地方抽象成一個函數(shù)丁寄,或者一個類了。
最后一言
不要復(fù)制粘貼代碼泊愧!不要復(fù)制粘貼代碼伊磺!不要復(fù)制粘貼代碼!即使你學(xué)不會什么是模塊化删咱,什么是設(shè)計模式屑埋,什么是軟件體系結(jié)構(gòu),起碼也要懂得起碼那么一丁點的抽象好么L底獭摘能!請不要做一個耿直的把代碼擼了一遍又一遍的人!