乙個好的設計應當具備哪些要素

2021-08-30 03:24:34 字數 1344 閱讀 9642

對於乙個好的設計,我們往往會說其應當具備可維護性,這是最為基本的要求。其它的要求,比如效能、資源的占用等都應當在滿足可維護性的情況下再去考慮的。但可維護性是乙個非常籠統的詞,可以說乙個詞包含了很多的東西,比如,可讀性、可擴充套件性等等,都可以當作是可維護性的內容。我在日常工作中,對於乙個好的設計,有一些自己的想法,主要是體現在「四性一痛」。

第一,乙個好的設計應當具有「一致性」。一致性就是對於相類似的問題採用同樣的方法去處理,而不是對於類似的情況,在case1中採用的是設計a,而在case2中採用的是設計b。對於這種設計,其往往很難維護。需要說明的一點是,一致性可以包括設計方法的一致性、函式命名的一致性、注釋書寫格式的一致性等等。在一致性上乙個好的例子是:unix/linux中對於檔案和裝置的處理都是採用open()/close()/ioctl()/read()/write()這五個函式來實現的,當我們在unix/linux上程式設計時,只要說到開啟裝置或是檔案,我們就知道應當如何做了。再來看看一致性不好的乙個例子:比如clib中的malloc()/free(),這是一對用於分配和釋放記憶體(heap)的函式,在函式的命名上應當說其一致性並不好,在我看來malloc()/mfree()就要比它好些,不同之處就是在free()函式名的前面加了乙個m。一致性好的軟體,不論是維護或是閱讀都讓人覺得舒服和自然,這一點是非常重要的!

第二,乙個好的設計應當具有「完整性」。打乙個比方,比如我們的程式需要寫乙個模組用於管理某種型別的資源,因此,我們寫了乙個allocate()函式用於對這一資源進行分配。從完整性的角度來看有allocate()就應當有free()或是release()。因此,我們的設計應當包含free()或是release()。完整性好的設計往往給模組的使用者帶來某種程度的靈活性和便利性。

第三,模組之間的「正交性」。正交性體現在模組之間不應當存在功能重疊的部分,對於模組之間存在重疊的部分,往往表明我們需要抽象出另乙個模組,從而將重疊的部分轉移到這一新模組中。

第四,設計的「簡單性」。簡單性包括**邏輯的簡單性和**語句的簡單性,簡單意味著容易維護、理解。簡單本身也是一種美。

最後,我想對於乙個好的設計,作者可以問問自己:我在設計這個模組時「痛苦」過了嗎?如果沒有,那存在兩種可能;一是問題很簡單或是我們自己的水平很高,所以不需要更多的思考去實現它;另一種可能就是這一設計有可能是乙個「頭痛治頭,腳痛治腳」的設計。好的設計,我們往往需要在很多方面進行權衡,在設計初期是非常痛苦的一件事,但隨著設計的完善,我們會發現「這一設計就是我想要的、就應當是這個樣子的」,到時自己會覺得這個設計很舒服,真的體現了「苦盡甘來」。

對於上面所提到的一些好的設計的特點,在我們的工作中可能不是一次性設計到位的,但是我們必須將這些特點記在心中,並隨著工作的進展最後實現它們。

本文出自 「李雲」 部落格,請務必保留此出處

本文出自 51cto.com技術部落格

乙個好的設計應當具備哪些要素

對於乙個好的設計,我們往往會說其應當具備可維護性,這是最為基本的要求。其它的要求,比如效能 資源的占用等都應當在滿足可維護性的情況下再去考慮的。但可維護性是乙個非常籠統的詞,可以說乙個詞包含了很多的東西,比如,可讀性 可擴充套件性等等,都可以當作是可維護性的內容。我在日常工作中,對於乙個好的設計,有...

乙個合格的程式設計師應當具備的能力

1.學習新東西的時候,找不到合適的資料。對於乙個真正的程式設計師來說,如何迅速準確的找到第一手的資料是非常重要的能力之一 2.有了新的較複雜的需求,立馬就開始敲鍵盤壘 真正的程式設計師,都會反覆討論反覆的評估,等大腦裡有一張較為完整的picture之後,才開始制定計畫,搭建 修改框架,然後 和文件齊...

乙個好的銷售團隊需具備的4個特點

你認為乙個好的銷售團隊需要具備哪些特點呢?1.保持學習 這個銷售團隊,應該保持學習,大家經常性的會在一起討論學習。像我之前待的銷售公司團隊每天開大半個小時的晨會,讓優秀的人分享一些銷售上的案例,每天下班前半個小時團隊一起做總結,針對一些客戶案例做分析,商討出好的解決方案,這就是學習的過程。保持學習的...