一个好的设计应当具备哪些要素
生活随笔
收集整理的這篇文章主要介紹了
一个好的设计应当具备哪些要素
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
對(duì)于一個(gè)好的設(shè)計(jì),我們往往會(huì)說(shuō)其應(yīng)當(dāng)具備可維護(hù)性,這是最為基本的要求。其它的要求,比如性能、資源的占用等都應(yīng)當(dāng)在滿(mǎn)足可維護(hù)性的情況下再去考慮的。但可維護(hù)性是一個(gè)非常籠統(tǒng)的詞,可以說(shuō)一個(gè)詞包含了很多的東西,比如,可讀性、可擴(kuò)展性等等,都可以當(dāng)作是可維護(hù)性的內(nèi)容。我在日常工作中,對(duì)于一個(gè)好的設(shè)計(jì),有一些自己的想法,主要是體現(xiàn)在“四性一痛”。 第一,一個(gè)好的設(shè)計(jì)應(yīng)當(dāng)具有“一致性”。一致性就是對(duì)于相類(lèi)似的問(wèn)題采用同樣的方法去處理,而不是對(duì)于類(lèi)似的情況,在case1中采用的是設(shè)計(jì)A,而在case2中采用的是設(shè)計(jì)B。對(duì)于這種設(shè)計(jì),其往往很難維護(hù)。需要說(shuō)明的一點(diǎn)是,一致性可以包括設(shè)計(jì)方法的一致性、函數(shù)命名的一致性、注釋書(shū)寫(xiě)格式的一致性等等。在一致性上一個(gè)好的例子是:UNIX/LINUX中對(duì)于文件和設(shè)備的處理都是采用open()/close()/ioctl()/read()/write()這五個(gè)函數(shù)來(lái)實(shí)現(xiàn)的,當(dāng)我們?cè)赨NIX/LINUX上編程時(shí),只要說(shuō)到打開(kāi)設(shè)備或是文件,我們就知道應(yīng)當(dāng)如何做了。再來(lái)看看一致性不好的一個(gè)例子:比如CLIB中的malloc()/free(),這是一對(duì)用于分配和釋放內(nèi)存(Heap)的函數(shù),在函數(shù)的命名上應(yīng)當(dāng)說(shuō)其一致性并不好,在我看來(lái)malloc()/mfree()就要比它好些,不同之處就是在free()函數(shù)名的前面加了一個(gè)m。一致性好的軟件,不論是維護(hù)或是閱讀都讓人覺(jué)得舒服和自然,這一點(diǎn)是非常重要的! 第二,一個(gè)好的設(shè)計(jì)應(yīng)當(dāng)具有“完整性”。打一個(gè)比方,比如我們的程序需要寫(xiě)一個(gè)模塊用于管理某種類(lèi)型的資源,因此,我們寫(xiě)了一個(gè)allocate()函數(shù)用于對(duì)這一資源進(jìn)行分配。從完整性的角度來(lái)看有allocate()就應(yīng)當(dāng)有free()或是release()。因此,我們的設(shè)計(jì)應(yīng)當(dāng)包含free()或是release()。完整性好的設(shè)計(jì)往往給模塊的使用者帶來(lái)某種程度的靈活性和便利性。 第三,模塊之間的“正交性”。正交性體現(xiàn)在模塊之間不應(yīng)當(dāng)存在功能重疊的部分,對(duì)于模塊之間存在重疊的部分,往往表明我們需要抽象出另一個(gè)模塊,從而將重疊的部分轉(zhuǎn)移到這一新模塊中。 第四,設(shè)計(jì)的“簡(jiǎn)單性”。這里的簡(jiǎn)單不是指我們考慮欠缺,而是指在我們將問(wèn)題考慮周全后,找出一種簡(jiǎn)單的設(shè)計(jì)和實(shí)現(xiàn)方法。簡(jiǎn)單性包括代碼邏輯的簡(jiǎn)單性和代碼語(yǔ)句的簡(jiǎn)單性。簡(jiǎn)單意味著容易維護(hù)、理解,簡(jiǎn)單本身就是一種美!
最后,我想對(duì)于一個(gè)好的設(shè)計(jì),作者可以問(wèn)問(wèn)自己:我在設(shè)計(jì)這個(gè)模塊時(shí)“痛苦”過(guò)了嗎?如果沒(méi)有,那存在兩種可能;一是問(wèn)題很簡(jiǎn)單或是我們自己的水平很高,所以不需要更多的思考去實(shí)現(xiàn)它;另一種可能就是這一設(shè)計(jì)有可能是一個(gè)“頭痛治頭,腳痛治腳”的設(shè)計(jì)。好的設(shè)計(jì),我們往往需要在很多方面進(jìn)行權(quán)衡,在設(shè)計(jì)初期是非常痛苦的一件事,但隨著設(shè)計(jì)的完善,我們會(huì)發(fā)現(xiàn)“這一設(shè)計(jì)就是我想要的、就應(yīng)當(dāng)是這個(gè)樣子的”,到時(shí)自己會(huì)覺(jué)得這個(gè)設(shè)計(jì)很舒服,真的體現(xiàn)了“苦盡甘來(lái)”。 對(duì)于上面所提到的一些好的設(shè)計(jì)的特點(diǎn),在我們的工作中可能不是一次性設(shè)計(jì)到位的,但是我們必須將這些特點(diǎn)記在心中,并隨著工作的進(jìn)展最后實(shí)現(xiàn)它們。
最后,我想對(duì)于一個(gè)好的設(shè)計(jì),作者可以問(wèn)問(wèn)自己:我在設(shè)計(jì)這個(gè)模塊時(shí)“痛苦”過(guò)了嗎?如果沒(méi)有,那存在兩種可能;一是問(wèn)題很簡(jiǎn)單或是我們自己的水平很高,所以不需要更多的思考去實(shí)現(xiàn)它;另一種可能就是這一設(shè)計(jì)有可能是一個(gè)“頭痛治頭,腳痛治腳”的設(shè)計(jì)。好的設(shè)計(jì),我們往往需要在很多方面進(jìn)行權(quán)衡,在設(shè)計(jì)初期是非常痛苦的一件事,但隨著設(shè)計(jì)的完善,我們會(huì)發(fā)現(xiàn)“這一設(shè)計(jì)就是我想要的、就應(yīng)當(dāng)是這個(gè)樣子的”,到時(shí)自己會(huì)覺(jué)得這個(gè)設(shè)計(jì)很舒服,真的體現(xiàn)了“苦盡甘來(lái)”。 對(duì)于上面所提到的一些好的設(shè)計(jì)的特點(diǎn),在我們的工作中可能不是一次性設(shè)計(jì)到位的,但是我們必須將這些特點(diǎn)記在心中,并隨著工作的進(jìn)展最后實(shí)現(xiàn)它們。
總結(jié)
以上是生活随笔為你收集整理的一个好的设计应当具备哪些要素的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 090620 刚才修复一个fat32分区
- 下一篇: 自动发现网络拓扑,一站式点击完成