我所認識的軟件開發原則:簡單表述

[size=medium] 簡單表述,就是用通俗直白的表達來正確說明問題。說起這個話題,首先我會感覺心虛,以前爲了裝X,故意以專業術語加模糊的定義來描述問題,看到別人似懂非懂的神情,我既興奮又惶恐,感覺一定要把他繞在裏面纔算專業。但換作別人講個問題把我繞暈,我就滿不在乎,認爲別人應該也沒弄明白是怎麼回事,因爲我總覺着每個問題都應該有個簡單道理。這種人性的弱點也讓我走了不少彎路,幸好及時悔改,不至於遺失太多。

兩年多來我所苛求的簡單似乎總沒有實現過。系統是越設計越複雜,邏輯越改越多,有時候非得整個系統重構才能看起來舒服些。痛定思痛,爲了追求理論的樸實,我開始總結日常所遇到的很多系統、架構、產品的簡單之處,以求他日我來設計系統時,也有追求的目標。

跑遠了,繼續來說主題。假設朋友用手機跟我聊天,我在網上看到一段很有意思的話想和朋友分享。如果我知道朋友的手機是可以上網的,那麼我會給他一個URL讓他自己去看,如果他不能上網,我就會把內容貼給他。當然,我也可以不論朋友的手機能不能上網,都把網頁內容發給他。在這裏,就涉及到數據簡單有效傳輸的問題。在系統數據傳輸過程中,我們應當秉持簡潔的理念,用最少的信息達到完整傳輸的目的。

網絡通信中的衆多協議是非常簡潔的。因爲要處理跨網絡的端到端傳輸,路途遙遠,如果不能有效表述信息,對網絡資源的浪費是可觀的。所以每個協議對字節錙銖必較,力求用最少的數據表達有效屬性和控制協議。同樣一個有意思的例子是HTTP 304狀態碼,用於判斷服務器端數據的lastModifiedTime與客戶端緩存數據的lastModifiedTime是否一致,如果一致就表示在這次請求之前的一段時間這些數據沒有任何變化,客戶端可以放心使用本地緩存,否則就將最新的數據發送到客戶端。對於網頁中很多的靜態內容,只是一個狀態信息就可以減少很多網絡數據流量,實屬有效性的典範。

這種成功的例子很多,對於我們來說,在實踐中應當將簡單有效性體現在哪呢。在[color=brown]設計階段[/color],儘量簡單易懂。如考慮問題時,就假定這個問題出現是現實生活中,我們人是怎樣去解決的,有怎樣的流程,然後代入系統角色中來解決問題([i]軟件設計過程中有角色扮演這樣的一種分析模式[/i])。這樣做的好處既讓另外的設計和開發人員理解,也易於項目的其它角色對項目有很多的認識。同時,在軟件的生命週期中,佔絕大部分時間的維護階段可以省太多力氣。在[color=brown]實現階段[/color],簡潔有效的接口和返回值是十分必要的。各模塊之間有着簡單的接口,註釋清楚明瞭。模塊間傳輸的數據也應當有效,簡明。假如A與B模塊都要處理數據庫中的某些數據,那麼在A和B之間傳輸的就應當是這些數據在數據庫中的主鍵或惟一標識,而不是整個數據([i]當然,是在不考慮數據庫壓力,而傳輸成本比較大的情況下[/i])。

以上的舉例基本只是我們開發中的一部分,我們還得學習新的技術和概念。在我們學習時,這種簡單性也至關重要。多年來對於學習我總結的一條經驗就是:要學就一次學懂。但在自身知識層次或是書本表述能力各異的情況下,要一次學明白實在是有些難。軟件行業的特點是源源不斷湧現的新名詞,新概念。很多時候一個簡單的概念被不斷包裝炒作後,再附帶一些難於理解的解釋,基本就可以忽倒一批人,對之加以膜拜。以Spring熱炒的IoC來說,一個簡單概念被冠以一個好玩的名字,控制反轉。在大家還在迷糊的時候,又一位大師([i]具體是誰大家清楚[/i])站出來說這個不應該叫IoC,應該叫DI,翻來倒去的折騰概念,這可能和國外有限年代的歷史文化有關吧,以發明縮寫爲傲。同樣讓大家很壓抑的一個概念是AOP,無奈的可笑。

很多時候當我們學懂一個東西后,可能會恍然大悟,噢,原來是這麼回事。其中感慨的時候肯定是和自己已明白的一個道理聯繫起來了,這些本身的道理是很簡單明瞭的。所以,在給別人想講清楚一件事的時候,要用最直白,最易於理解的方式,如講故事,套例子,怎樣直白怎樣來。在學習一個新東西的時候,仔細關注作者最初說的那句話,知道這個東西是做什麼的,之後的理解都是建立在你知道它是做什麼的之上。

貌似用了很多廢話來說明一個簡單的道理。如果你很厭煩大段文字從開頭跳到這裏,那麼我可以告訴你上面說了很多話,其實就是四個字:[color=red][b]大道至簡[/b][/color]。
[/size]

[size=medium][url=http://langyu.iteye.com/blog/746179] 我所認識的軟件開發原則:權衡[/url]
[url=http://langyu.iteye.com/blog/744455] 我所認識的軟件開發原則:封裝[/url]
[url=http://langyu.iteye.com/blog/744442] 我所認識的軟件開發原則:二八原則[/url]
[url=http://langyu.iteye.com/blog/745296] 我所認識的軟件開發原則:減少等待時間[/url][/size]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章