《遊戲程式設計模式》一1 1 什麼是軟體架構

2021-09-23 16:04:34 字數 1802 閱讀 9286

哇,此段簡直為這本書打了乙個糟糕的廣告。

相反,這本書是關於上面這一切要使用的**的組織方式。這裡少談**,多談**組織。每個程式都具有一定的組織性,即使它只是「把所有東西扔到main()函式裡然後看看會發生什麼」,所以我認為討論如何形成好的組織性會更有趣些。我們如何分辨乙個架構的好壞呢?

我大概有5年時間一直在思索這個問題。當然,像你一樣,我對好的設計有著一種直覺。我們都遇見過非常糟糕的**庫,最希望做的就是剔除它們,結束自己的痛苦。

不得不承認,我們大多數人只接觸到一部分這樣的工作。

少數幸運兒有相反的經驗,他們有機會與設計精美的**共事。那種**庫,感覺就像在乙個完美的豪華酒店裡站了很多禮賓在翹首等待你的光臨。兩者之間有什麼區別呢?

對於我來說,好的設計意味著當我做出乙個改動時,就好像整個程式都在期待它一樣。我可以呼叫少量可選的函式來完美地解決乙個問題,而不會為軟體帶來***。

這聽起來不錯,但還不夠切實。「只管寫你的**,架構會為你收拾一切。」沒錯!。

讓我解釋下。第乙個關鍵部分是,架構意味著變化。人們不得不修改**庫。如果沒人接觸**(不管是因為**非常完美,又或者糟糕到人人都懶得開啟文字編輯器來編輯它),那麼它的設計就是無法體現其意義的。衡量乙個設計好壞的方法就是看它應對變化的靈活性。如果沒有變化,那麼這就像乙個跑步者從來沒有離開過起跑線一樣。

這在字面上是乙個ocr1過程,不過這個想法有些奇怪。

我們傾向於略過這一步,但它往往是程式設計中最耗時的部分。如果你認為從磁碟載入一些資料到ram很慢的話,試著通過視覺神經將這些資料載入到你的大腦裡。

一旦你的大腦有了乙個全面正確的認識,則只需稍微思考一下就能提出解決方案。這觀點值得反覆斟酌,但通常這是比較明確的。一旦你理解了這個問題和它涉及的**,則實際的編碼有時是微不足道的。

你的手指遊走於鍵盤間,直到右側的彩色燈光在螢幕上閃爍時,你就大功告成了,是嗎?還沒有!在你編寫測試,並將它傳送給**審查之前,你通常有一些清理工作要做。

我說「測試」了嗎?哦,是的,我說了。為一些遊戲**編寫單元測試比較難,但是大部分**是可以完全測試的。

我這裡不是要慷慨陳詞,不過,如果你之前沒有考慮過多做自動化測試的話,我希望你多做一些。難道沒有比一遍一遍手動驗證東西更好的事情要做嗎?

你在遊戲中加入了一些**,但是你不想後面處理**的人花大量時間理解或修改你的**。除非變動很小,通常都會做些重新組織工作來讓你新加的**無縫整合到程式中。如果你做得很好,那麼下乙個人在新增**的時候就不會察覺到你的**變動。

簡而言之,程式設計的流程圖如圖1-1所示。

現在想想,流程圖的環路中沒有出口有點小驚悚。

雖然不是很明顯,但我認為很多軟體架構師還處於學習階段。將**載入到腦中如此痛苦緩慢,得自己尋找策略來減少裝載**的體積。這本書有一整章(第5章)是關於解耦模式的,許多的設計模式也有相同的思想。

你可以用一堆方式來定義「解耦」,但我認為如果兩塊**耦合,意味著你必須同時了解這兩塊**。如果你讓它們解耦,那麼你只需了解其一。這很棒,因為如果只有一塊**和你的問題相關,則你只需要將這塊**裝載到你的腦袋中,而不用把另外一塊也裝載進去。

對我來說,這是軟體架構的乙個關鍵目標:在你前進前,最小化你腦海中的知識儲存量。

當然,對解耦的另乙個定義就是當改變了一塊**時不必更改另外一塊**。很明顯,我們需要更改一些東西,但是耦合得越低,更改所波及的範圍就會越小。

1 1什麼是軟體效能

1.什麼是 軟體效能 效能 首先是一種指標 表明軟體系統或構件對於其及時性要求的符合程度 其次是一種特性 可以用時間來度量。研究物件 軟體產品 效能的及時性 用響應時間或吞吐量來衡量 1.1.1使用者視角的軟體效能 對於互動式的應用 例如 web應用 來說,一般以使用者感受到的響應時間來描述系統的效...

什麼是程式設計?什麼是軟體開發?

在學校裡,為了實現課堂練習,為了完成作業,為了實現而實現的 過程,我將其定義為程式設計,這個時候,你只要正確的讓編譯器把你的 順利的編譯通過,輸出你希望的或者說你的導師希望的結果即可,你不需要考慮彈性 擴充套件性和維護性,也不需要考慮你的 是否強壯,也不需要考慮是否具有價值,因為你只是在程式設計。而...

什麼是軟體開發模式

軟體開發模式又稱開發范型 風範 具體描述如下 開發過程遵循的步驟 如面向過程的開發模式是對特定問題執行過程自頂向下層層分解,並定義成由一系列步驟構成的演算法,落實到可執行的 上。物件導向開發模式首先考慮的是參與到問題物件上 實體 為完成任務各個物件如何進行通訊協作,最後進一步將物件封裝可以執行方法,...