代碼大全2(5)


第五章:軟件構建中的設計(Design in Construction)


這屬於第二部分了:創建高質量的代碼(Creating High-Quality Code)
前面的四章屬於第一部分:打好基礎(Laying the Foundation)
才知道全書共分爲了七部分

這次好久沒來寫了,這章雖然讀了也有段時間了,一是最近時間有點緊(其實是自己懶),二是從這章開始讀的體會就沒那麼深了,也可能是沒了最開始時的激情了吧……任何事做久了都會有點厭倦的吧~即使是賺錢,不然怎麼會有那麼多的人覺得錢多了沒意思……

說實話,這章沒怎麼讀懂,就是不好怎麼總結,再看看,再看看……希望儘量能用一點簡短的語句表達本章描述的意圖。

又大概看了一遍本章,抓住主題:設計。都已經寫在章節名稱中了!爲何還會有疑惑呢?實在是因爲設計這個詞太廣泛了……

“軟件設計”即:去構思、創造或發明一套方案,來把一份計算機軟件的規格說明書要求轉化爲可實際運行的軟件。設計就是把需求分析和編碼調試連在一起的活動!這兒又談到了需求分析。
設計很大程度上是由系統的架構所決定的,看到這兒,我就明白了,即設計是使架構更明確,將前面所談的軟件構建前的準備中的工作做的更細緻!這就是設計了!在軟件工程中就是概要設計與詳細設計。

怪不得我看設計有很多與架構重複的地方呢!還有作者所言:在一些大型的項目中,設計可能會詳細到能夠讓編碼工作近乎機械化!!!!!這就是所謂的架構了吧!!大公司不都這樣的麼,沒有自己的架構,怎麼能快速開發,怎麼能賺到錢!封裝的太多就是爲了能讓人快速上手嘛,傻瓜式開發,和傻瓜式相機一樣,要是相機全都是要自己手動調節光圈快門等參數才能拍出一張看得清的照片出來,那相機怎麼能賺錢呢,除了那些攝影工作室吧,,所以纔有了傻瓜相機,全自動化,封裝好了,讓人快速上手,因此公司才能快速賺錢!!!!!!!但是人是一個奇怪動物的,有了精米要吃雜糧,有了自動化相機,那肯定又得追求手動相機了,就是現在很多人都完全不懂單反的卻想要一部單反。因爲那樣反其道而行之逼格纔夠高。但是單反也是繼承了很多自動的拍攝模式的,也許他們就是拿那些Auto檔來拍拍罷了~~這扯遠了,不屬於本思路( ⊙ o ⊙ )啊!    話說最近我也在看單反教程,準備買一部入門級單反練練手呢~人故逃不脫庸俗罷~在考慮Canon的600D和700D,索尼的D3200,D7000,都是入門級的機器……

設計會遇到很多問題,有些問題是永遠想不到的除非你遇到了並解決了TA,設計沒有最好,只有更好,又想起了前幾天設計一個數據庫的表結構,A方案設計:表中數據緊湊,但是讀寫不方便;B方案設計:會有很多冗餘數據,但是讀寫很方便……這就需要看自己取捨了,也是和項目實際有關的,比如,現在計算機的性能很好了,那麼多存點數據,佔點內存、佔點磁盤也無所謂的;但如果要考慮優化,那就不能這麼設計了……

管理複雜度:軟件的失敗很少說是由於技術的原因,大多都是由於不當的需求、管理、規劃等造成的。人能夠理解很簡單的東西,所以把一個系統分成了很多子系統來考慮,但是子系統還是太複雜,所以一級一級的分下去……開發時就專注於一個子系統或者子模塊,因此如果子系統與子系統間的依賴越少,那麼就越能專注而不用考慮其他,所以這裏又驗證了前面所談架構時的構造塊問題:每個構造塊應該專一,對其他構造塊知道的越少越好,將設計的信息侷限於各個構造塊之中!

設計也是有很多理論作支撐的:最小複雜度、易於維護、鬆散耦合、可擴展性、可重用性、高扇入、低扇出、可移植性、層次性……等等一大堆

這裏只說一下層次性:就是所謂的MVC結構。將設計分層是一種思想,而MVC就是後來具體的實現。根據子系統的不同作用將其分爲不同的層次。

本章又講到了前面所說的構造塊的設計:抽象、封裝、繼承等方法的使用。也提到了設計模式的使用,當然少不了GOF的《設計模式》這本大作。

設計的方法有:自下而上和自上而下、迭代、分而治之、合作設計等……設計要做的多詳細?這是個問題!記錄下設計的成果,不管是畫的圖、寫的文檔、總結等……



所以本章的總結就是:設計!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章