手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

架構(gòu)思維之復(fù)用

2021-04-22 09:16:44 7125

復(fù)用是架構(gòu)思維中非常重要的思維之一,是面向?qū)ο蠹軜?gòu)設(shè)計(jì)的核心思想,業(yè)務(wù)能力組件化,組件能力服務(wù)化,共享平臺,中臺建設(shè),公共服務(wù)下沉等都是為了提高系統(tǒng)的復(fù)用而設(shè)計(jì)。

好的系統(tǒng)設(shè)計(jì)具備可擴(kuò)展性(Extensibility)、靈活性(Flexibility)和可插入性(Pluggability),一個(gè)復(fù)用較好的系統(tǒng),就是一個(gè)易維護(hù)的系統(tǒng)。但實(shí)際上,可維護(hù)性和可復(fù)用性是兩個(gè)緯度。

一、可維護(hù)性

可維護(hù)性指系統(tǒng)的被修改能力和可修復(fù)能力,修改能力指改進(jìn)、系統(tǒng)環(huán)境、需求、系統(tǒng)容量等變化的適應(yīng);可修復(fù)能力指系統(tǒng)發(fā)生故障后,能夠排除(或抑制)故障予以修復(fù),并能按照原有設(shè)計(jì)流程正常運(yùn)行狀態(tài)的可能性。可維護(hù)性架構(gòu)有如下特征:

(1)易分析性

系統(tǒng)發(fā)生故障或缺陷時(shí),能很快定位或分析出原因。

(2)易改變性

面對新需求系統(tǒng)擁有快速被實(shí)現(xiàn)的能力,實(shí)現(xiàn)體現(xiàn)在代碼實(shí)現(xiàn)、設(shè)計(jì)實(shí)現(xiàn)和說明文檔的更新。

(3)易測試性

系統(tǒng)新的變更可以被驗(yàn)證的能力。

(4)穩(wěn)定性

兼容新的變更不影響原有系統(tǒng)的運(yùn)行的能力。

(5)依從性

架構(gòu)設(shè)計(jì)遵循和保持相關(guān)約定的能力。

對于系統(tǒng)可維護(hù)性的度量可以從以下幾個(gè)方面進(jìn)行判斷:

a.可理解性。指通過分析源碼和解讀相關(guān)設(shè)計(jì)文檔來了解系統(tǒng)架構(gòu)、功能和運(yùn)行邏輯的難易程度。一個(gè)可理解性高的系統(tǒng)一般應(yīng)具備以下的特征:模塊化(系統(tǒng)各個(gè)模塊結(jié)構(gòu)良好、功能完整),程序代碼清晰,編程風(fēng)格具有一致性(代碼風(fēng)格及設(shè)計(jì)風(fēng)格的一致性),完整性(對輸人數(shù)據(jù)進(jìn)行完整性檢查),使用有意義的數(shù)據(jù)名和函數(shù)名等。

b.可靠性。可靠性表明一個(gè)系統(tǒng)在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率。衡量可靠性的方法主要有兩類:第一類是根據(jù)程序錯(cuò)誤的統(tǒng)計(jì)數(shù)字來進(jìn)行可靠性預(yù)測。比如用一些可靠性模型,根據(jù)程序測試中發(fā)現(xiàn)并排除的錯(cuò)誤數(shù)來預(yù)測平均失效間隔時(shí)間(Mean Time To Failure,MTTF)。第二類是當(dāng)系統(tǒng)的可靠性與復(fù)雜性有關(guān)時(shí),可以根據(jù)程序的復(fù)雜性來預(yù)測軟件的可靠性。

c.可測試性。可測試性表明能夠用測試的方法來驗(yàn)證程序正確性的難易程度。系統(tǒng)的可測試性取決于系統(tǒng)的可理解性、復(fù)雜性、設(shè)計(jì)合理的測試用例的難易程度等方面的內(nèi)容。

d.可修改性。可修改性描述了程序能夠被正確修改的難易程度。一個(gè)可修改的程序應(yīng)當(dāng)是可理解的、通用的、簡單的、靈活的。通用性是指程序適用于各種功能變化而無需修改。靈活性是指能夠容易地對程序進(jìn)行修改。

e.可移植性。可移植性表明程序從一個(gè)運(yùn)行環(huán)境移植到另一個(gè)新的運(yùn)行環(huán)境的可能性的大小。一個(gè)可移植性好的系統(tǒng)應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的特性。

系統(tǒng)的可維護(hù)性不但和架構(gòu)師采用的分析設(shè)計(jì)方法和技術(shù)熟練程度有關(guān),還和項(xiàng)目管理技術(shù)有密切的聯(lián)系,除了和設(shè)計(jì)開發(fā)方法有關(guān)的因素之外,還有一些因素影響系統(tǒng)的可維護(hù)性的原因:

f.開發(fā)人員是否有統(tǒng)一的約束規(guī)范

g.從需求——業(yè)務(wù)分析——架構(gòu)設(shè)計(jì)——編碼實(shí)現(xiàn)——測試發(fā)布——線上運(yùn)營是否采用了統(tǒng)一的文檔結(jié)構(gòu)和文檔形成機(jī)制。

h.是否應(yīng)用了可維護(hù)性的語音和框架

i.是否有完整的代碼說明文檔

j.是否有持續(xù)更新保存規(guī)范化的測試用例信息

二、可復(fù)用性

復(fù)用性是面向?qū)ο蠹夹g(shù)最重要的特征之一,但是事與愿違復(fù)用性的好處,我們在架構(gòu)設(shè)計(jì)時(shí)并不能真正實(shí)現(xiàn),因?yàn)閺?fù)用需要付出一定的代價(jià),并不像我們使用面向?qū)ο箝_發(fā)工具一樣,很容易利用起復(fù)用性特性完成相關(guān)工作。相反,為了打到系統(tǒng)的復(fù)用性,我們需要取舍一些設(shè)計(jì)。另外好多設(shè)計(jì)者對于復(fù)用的范圍很有局限,常常會考慮代碼的復(fù)用而忽略了其他更高層次的復(fù)用,當(dāng)然代碼的復(fù)用是最基本的,代碼的復(fù)用有自身的好處,但是為了讓我們的系統(tǒng)復(fù)用,希望設(shè)計(jì)者能從更高的層次來看待復(fù)用。

1。復(fù)用性的好處

有較高的生產(chǎn)效率。

有較高的系統(tǒng)質(zhì)量。

恰當(dāng)運(yùn)用復(fù)用可以改善系統(tǒng)的可維護(hù)性。

2。復(fù)用分類

我們可以將系統(tǒng)復(fù)用分為代碼復(fù)用、算法的復(fù)用、數(shù)據(jù)結(jié)構(gòu)的復(fù)用、測試信息的復(fù)用、設(shè)計(jì)的復(fù)用、分析的復(fù)用,接下來我們就詳細(xì)講解如何做這些復(fù)用。

(1)代碼復(fù)用

代碼復(fù)用是最常見的復(fù)用,包括目標(biāo)代碼和源代碼的復(fù)用,指的是在同一個(gè)應(yīng)用的多個(gè)模塊中,或者是在多個(gè)應(yīng)用下代碼的復(fù)用。理想狀況下,代碼復(fù)用可以共享通用類、函數(shù)集合來實(shí)現(xiàn);即便是在最差的情況下,代碼復(fù)用也可以通過拷貝和修改源代碼來實(shí)現(xiàn)。

代碼復(fù)用的一個(gè)關(guān)鍵因素是你要能夠獲取到代碼。如果必要的話,你自己可以修改這段代碼,當(dāng)然也可以找別人幫你修改。這一點(diǎn)好壞并存,通過審讀代碼,你可以自己決定—— 哪怕這個(gè)決定很難做出—— 你是否要復(fù)用這段代碼。同時(shí),把代碼開放給你,那么代碼原作者也許會失去撰寫說明文檔的動力,這也就增加了你理解它所花費(fèi)的時(shí)間,減小了你可能獲得的收益。

代碼復(fù)用的最大好處在于它可以減少你的代碼量,也就潛在地減小了開放和維護(hù)成本。壞處則在于你自己應(yīng)用的能力范圍就被約束住了,而且也增加了應(yīng)用和被復(fù)用代碼之間的耦合。要大規(guī)模地實(shí)現(xiàn)源程序的復(fù)用,只有依靠含有大量可復(fù)用構(gòu)件的構(gòu)件庫,如“對象鏈接與嵌入”技術(shù),既支持在源程序級上定義構(gòu)件以構(gòu)造新的系統(tǒng),又使這些構(gòu)件在目標(biāo)代碼級上仍然是一些獨(dú)立的可復(fù)用構(gòu)件,能夠在運(yùn)行時(shí)被靈活地重新組合為各種應(yīng)用系統(tǒng)。

代碼復(fù)用是最基礎(chǔ)最基本的復(fù)用,那我們就來看看做到代碼復(fù)用應(yīng)該注意哪些內(nèi)容:

a.面向接口編程

"面向接口編程"是面向?qū)ο笤O(shè)計(jì)(OOD)的第一個(gè)基本原則。面向接口編程就是先把客戶的業(yè)務(wù)邏輯線提取出來,作為接口,業(yè)務(wù)具體實(shí)現(xiàn)通過該接口的實(shí)現(xiàn)類來完成。當(dāng)客戶需求變化時(shí),只需編寫該業(yè)務(wù)邏輯的新的實(shí)現(xiàn)類,通過更改配置文件(例如Spring框架)中該接口的實(shí)現(xiàn)類就可以完成需求,不需要改寫現(xiàn)有代碼,減少對系統(tǒng)的影響。

b.使用對象組合而不是繼承

"優(yōu)先使用組合而不是繼承"是面向?qū)ο笤O(shè)計(jì)(OOD)的第二個(gè)基本原則。繼承是在程序開發(fā)的過程中重構(gòu)得到的,而不是程序設(shè)計(jì)之初就使用繼承,很多開發(fā)者濫用繼承,結(jié)果可能造成后期的代碼解決不了需求的變化。因此,優(yōu)先使用組合而不是繼承,是面向?qū)ο箝_發(fā)的一個(gè)重要經(jīng)驗(yàn)。

繼承:繼承的起源,來自于多個(gè)類中相同特征和行為的抽象。子類可以通過繼承父類,那么可以調(diào)用父類中定義的方法和屬性,從而達(dá)到代碼重用的目的。另外,子類除了重用父類的代碼以外,還可以擴(kuò)展自身的屬性和方法,來描述子類特有的特征和行為。

對象組合:對象組合要求被組合的對象具有良好的接口,并且通過從其他對象得到的引用在運(yùn)行時(shí)運(yùn)態(tài)定義。對象組合是類繼承之外的另一種復(fù)用選擇,可以將對象組合到其他對象中,以構(gòu)建更加復(fù)雜的功能。由于對象的內(nèi)部細(xì)節(jié)對其他對象不可見,它們看上去為“黑箱”,這種類型的復(fù)用稱為黑箱復(fù)用(black-box reuse)。對象只以"黑箱"的形式出現(xiàn)。

下面分析繼承和組合的優(yōu)缺點(diǎn):

(a)繼承的優(yōu)缺點(diǎn)

優(yōu)點(diǎn): 

繼承簡單粗爆,直觀,關(guān)系在編譯時(shí)靜態(tài)定義。

被復(fù)用的實(shí)現(xiàn)易于修改,sub可以覆蓋super的實(shí)現(xiàn)。

缺點(diǎn):

無法在運(yùn)行時(shí)變更從super繼承來的實(shí)現(xiàn)(也不一定是缺點(diǎn))

sub的部分實(shí)現(xiàn)通常定義在super中。

sub直接面對super的實(shí)現(xiàn)細(xì)節(jié),因此破壞了封裝。

super實(shí)現(xiàn)的任何變更都會強(qiáng)制子類也進(jìn)行變更,因?yàn)樗鼈兊膶?shí)現(xiàn)聯(lián)系在了一起。

如果在新的問題場景下繼承來的實(shí)現(xiàn)已過時(shí)或不適用,所以必須重寫super或繼承來的實(shí)現(xiàn)。

由于在類繼承中,實(shí)現(xiàn)的依存關(guān)系,對子類進(jìn)行復(fù)用可能會有問題。有一個(gè)解決辦法是,只從協(xié)議或抽象基類繼承(子類型化),國為它們只對很少的實(shí)現(xiàn),而協(xié)議則沒有實(shí)現(xiàn)。

(b)組合的優(yōu)缺點(diǎn)優(yōu)點(diǎn):

不會破壞封裝,因?yàn)橹煌ㄟ^接口來訪問對象;

減少實(shí)現(xiàn)的依存關(guān)系,因?yàn)閷?shí)面是通過接口來定義的;

可以在運(yùn)行時(shí)將任意對象替換為其他同類型的對象;

可以保持類的封裝以專注于單一任務(wù);

類和他的層次結(jié)構(gòu)能保持簡潔,不至于過度膨脹而無法管理;

缺點(diǎn):

涉及對象多;

系統(tǒng)的行為將依賴于不同對象間的關(guān)系,而不是定義于單個(gè)類中;

現(xiàn)成的組件總是不太夠用,從而導(dǎo)致我們要不停的定義新對象。

c.將可變的部分和不可變的部分分離

"將可變的部分和不可變的部分分離"是面向?qū)ο笤O(shè)計(jì)(OOD)的第三個(gè)基本原則。如果使用繼承的復(fù)用技術(shù),我們可以在抽象基類中定義好不可變的部分,而由其子類去具體實(shí)現(xiàn)可變的部分,不可變的部分不需要重復(fù)定義,而且便于維護(hù)。如果使用對象組合的復(fù)用技術(shù),我們可以定義好不可變的部分,而可變的部分可以由不同的組件實(shí)現(xiàn),根據(jù)需要,在運(yùn)行時(shí)動態(tài)配置。這樣,我們就有更多的時(shí)間關(guān)注可變的部分。對于對象組合技術(shù)而言,每個(gè)組件只完成相對較小的功能,相互之間耦合比較松散,復(fù)用率較高,通過組合,就能獲得新的功能。

d.控制方法的長度

通常,我們的方法應(yīng)該只有盡量少的幾行,太長的方法會難以理解,而且,如果方法太長,則應(yīng)該重新設(shè)計(jì)。對此,可以總結(jié)為以下原則:

三十秒原則:如果另一個(gè)程序員無法在三十秒之內(nèi)了解你的函數(shù)做了什么(What),如何做(How)以及為什么要這樣做(Why),那就說明你的代碼是難以維護(hù)的,必須得到提高; 

一屏原則:如果一個(gè)函數(shù)的代碼長度超過一個(gè)屏幕,那么或許這個(gè)函數(shù)太長了,應(yīng)該拆分成更小的子函數(shù);一行代碼盡量簡短,并且保證一行代碼只做一件事。

e.消除case / if語句

要盡量避免在代碼中出現(xiàn)判斷語句,使用過多的switch/case 或者 if else 語句,代碼的可讀性很差同時(shí)也違背了面向?qū)ο蟮脑瓌t。

f.減少參數(shù)個(gè)數(shù)

有大量參數(shù)需要傳遞的方法,通常很難閱讀。我們可以將所有參數(shù)封裝到一個(gè)對象中來完成對象的傳遞,這也有利于錯(cuò)誤跟蹤。太多層的對象包裝對系統(tǒng)效率有影響,但是它帶來的好處相比,我們寧愿做包裝。畢竟"封裝"也是OO的基本特性之一,而且,"每個(gè)對象完成盡量少(而且簡單)的功能",也是OO的一個(gè)基本原則。

g.類層次的最高層應(yīng)該是抽象類。

在許多情況下,提供一個(gè)抽象基類有利做特性化擴(kuò)展。由于在抽象基類中,大部分的功能和行為已經(jīng)定義好,使我們更容易理解接口設(shè)計(jì)者的意圖是什么。由于JAVA不允許"多繼承",從一個(gè)抽象基類繼承,就無法再從其它基類繼承了。所以,提供一個(gè)抽象接口(interface)是個(gè)好主意,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,從而模擬實(shí)現(xiàn)了"多繼承",為類的設(shè)計(jì)提供了更大的靈活性。

h.盡量減少對變量的直接訪問

對數(shù)據(jù)的封裝原則應(yīng)該規(guī)范化,不要把一個(gè)類的屬性暴露給其它類,而是應(yīng)該通過訪問方法去保護(hù)他們,這有利于避免產(chǎn)生波紋效應(yīng)。如果某個(gè)屬性的名字改變,你只需要修改它的訪問方法,而不是修改所有相關(guān)的代碼。

i.子類應(yīng)該特性化,完成特殊功能

如果一個(gè)子類只是使一個(gè)組件變成組件管理器,而不是實(shí)現(xiàn)接口功能,或者,重載某個(gè)功能,那么,就應(yīng)該使用一個(gè)外部的容器類,而不是創(chuàng)建一個(gè)子類

j.拆分過大的類

如果一個(gè)類有太多的方法(超過50個(gè)),那么它可能要做的工作太多,我們應(yīng)該試著將它的功能拆分到不同的類中。

k.作用截然不同的對象應(yīng)該拆分

對同樣的數(shù)據(jù),有不同的視圖。某些屬性描述的是數(shù)據(jù)結(jié)構(gòu)怎樣生成,而某些屬性描述的是數(shù)據(jù)結(jié)構(gòu)本身。最好將這兩個(gè)視圖拆分到不同的類中,從類名上就可以區(qū)分出不同視圖的作用。類的域、方法也應(yīng)該有同樣的考慮!

為了提高代碼的復(fù)用性,還有好多的手段,以上都是多年的編碼經(jīng)驗(yàn),希望能幫助大家。

(2)算法的復(fù)用

各種算法如排序算法都已經(jīng)得到了大量的研究,幾乎不需要我們重寫自己的算法,各種語言通常也實(shí)現(xiàn)了這些常用算法,因此直接復(fù)用即可。

(3)數(shù)據(jù)結(jié)構(gòu)的復(fù)用

與算法一樣,類似數(shù)組、隊(duì)列、棧、列表等得到了透徹的研究,只需要直接復(fù)用。

(4)測試信息的復(fù)用

測試信息的復(fù)用主要包括測試用例的復(fù)用和測試過程的復(fù)用。前者是把一個(gè)軟件的測試用例應(yīng)用于新的軟件測試中,或者在軟件作出修改時(shí)使用在新一輪的測試中。后者是在測試過程中通過軟件工具自動記錄測試的過程信息,包括測試員的每一個(gè)操作、輸人參數(shù)、測試用例及運(yùn)行環(huán)境等信息,并將這些過程信息應(yīng)用于新的軟件測試或新一輪的軟件測試中。測試信息的復(fù)用級別不易同分析、設(shè)計(jì)、編程的復(fù)用級別進(jìn)行準(zhǔn)確地比較,因?yàn)楸粡?fù)用的不是同一事物的不同抽象層次,而是另一種信息,但從這些信息的形態(tài)來看,大體處于與程序代碼相當(dāng)?shù)募墑e。

a.測試用例設(shè)計(jì)方法

測試用例設(shè)計(jì)可以分為白盒測試用例設(shè)計(jì)法和黑盒測試用i設(shè)計(jì)法。

白盒測試用設(shè)計(jì)法


1.webp.jpg


黑盒測試用例設(shè)計(jì)法


2.webp.jpg


(5)設(shè)計(jì)復(fù)用

設(shè)計(jì)復(fù)用指的是使用對以前創(chuàng)建的設(shè)計(jì)用例、標(biāo)準(zhǔn)文檔、領(lǐng)域模型、過程指導(dǎo)和其它,來幫助你開始一個(gè)新工程。設(shè)計(jì)復(fù)用分為幾個(gè)層次,從完整的拿來即用這種100%的完全復(fù)用,到僅以工件作模型之用,研究分析之以獲取靈感。舉例來說,編碼和用戶界面設(shè)計(jì)的標(biāo)準(zhǔn)文檔對不同的項(xiàng)目來說,就是有價(jià)值的設(shè)計(jì),像其中的建模符號定義和方法論總覽這種文檔,是可以直接復(fù)用的。我曾經(jīng)為已有的通用數(shù)據(jù)接口以面向?qū)ο蟮姆绞阶隽税b,讓這些類使用起來更直觀。

設(shè)計(jì)復(fù)用提升了項(xiàng)目間的一致性,減少了各個(gè)項(xiàng)目的管理成本。用戶界面標(biāo)準(zhǔn)對絕大多數(shù)平臺來說都是很常用的;編碼標(biāo)準(zhǔn)對主要語言來說都是不可或缺的;而標(biāo)準(zhǔn)面向?qū)ο蠓椒ㄕ摵湍P陀浱栠@樣的東西已經(jīng)使用好多年了。主要的壞處在于很多核心程序員總覺得這種復(fù)用過了頭,給彼此帶來了強(qiáng)加的標(biāo)準(zhǔn)和過程約束。因此設(shè)計(jì)復(fù)用的底線就是當(dāng)你覺得它是一種重要、可行和醒目的技術(shù)時(shí),再去使用它。這種復(fù)用有如下三種途徑。

從現(xiàn)有系統(tǒng)的設(shè)計(jì)結(jié)果中提取一些可復(fù)用的設(shè)計(jì)組件,并將這些組件應(yīng)用于新系統(tǒng)的設(shè)計(jì)中。

將一個(gè)現(xiàn)有系統(tǒng)的全部設(shè)計(jì)文檔在新的系統(tǒng)上重新實(shí)現(xiàn),也就是將一個(gè)設(shè)計(jì)運(yùn)用于多個(gè)具體的實(shí)現(xiàn)中。

和任何應(yīng)用無關(guān),獨(dú)立設(shè)計(jì)開發(fā)可復(fù)用的設(shè)計(jì)組件。

(6)分析復(fù)用

分析復(fù)用是比設(shè)計(jì)復(fù)用更高級別的復(fù)用,可復(fù)用的分析組件是針對業(yè)務(wù)領(lǐng)域中某些設(shè)計(jì)或問題抽象出的組件,受設(shè)計(jì)技術(shù)及實(shí)現(xiàn)條件的影響很少,所以可復(fù)用的機(jī)會更大,如領(lǐng)域模型已經(jīng)顯出巨大的可復(fù)用潛能,因?yàn)樗鼈兎从吵龃笠?guī)模的業(yè)務(wù)行為內(nèi)聚的特征,在許多應(yīng)用中都是一致的。你在領(lǐng)域開發(fā)中創(chuàng)造的每樣?xùn)|西都是可以復(fù)用的。與后期的復(fù)用相比,領(lǐng)域組件在前期業(yè)務(wù)行為和組織的架構(gòu)設(shè)計(jì)中顯出更大的作用。復(fù)用的途徑也有三種。

從已有系統(tǒng)的分析結(jié)果中提取可復(fù)用的組件用于新系統(tǒng)的架構(gòu)設(shè)計(jì)。

用一份完整的分析文檔作為輸入,產(chǎn)生針對不同系統(tǒng)和其他實(shí)現(xiàn)條件的多項(xiàng)設(shè)計(jì)。

和任何應(yīng)用無關(guān),獨(dú)立設(shè)計(jì)開發(fā)可復(fù)用的分析組件。

三、可復(fù)用和可維護(hù)性的關(guān)系

可復(fù)用和可維護(hù)性的關(guān)系如下。

1.適當(dāng)?shù)貞?yīng)用復(fù)用,同時(shí)提高了可維護(hù)性,就是在保持甚至提高系統(tǒng)的可維護(hù)性的同時(shí),實(shí)現(xiàn)系統(tǒng)復(fù)用。

2.適當(dāng)提高系統(tǒng)的可復(fù)用性,同時(shí)提高了系統(tǒng)的可擴(kuò)展性。系統(tǒng)的可擴(kuò)展性由“開-閉”原則、里氏代換原則、依賴倒轉(zhuǎn)原則和組合/聚合復(fù)用原則保證。

3.適當(dāng)提高系統(tǒng)的可復(fù)用性,同時(shí)提高了系統(tǒng)的靈活性。系統(tǒng)的靈活性由“開-閉”原則、迪米特法則、接口隔離原則保證。

4.適當(dāng)提高系統(tǒng)的可復(fù)用性,同時(shí)提高了系統(tǒng)的可插入性。系統(tǒng)的可插入性由“開-閉”原則、里氏代換原則、組合/聚合復(fù)用原則和依賴倒轉(zhuǎn)原則保證。

復(fù)用的成功之路

那么我們?nèi)绾巫龅秸娴拿嫦驅(qū)ο笤O(shè)計(jì)的復(fù)用呢?上面所講的內(nèi)容都是工具,如果你認(rèn)真的看完了,你已經(jīng)擁有了復(fù)用的工具,復(fù)用是否成功就要看我們?nèi)绾卫霉ぞ邘椭覀冊谙到y(tǒng)的生命周期中來實(shí)現(xiàn)。不要為了復(fù)用而設(shè)計(jì)系統(tǒng),那么你會很累。給你提幾個(gè)意見:

a.多次驗(yàn)證并被應(yīng)用

你可以嘗試可復(fù)用的設(shè)計(jì),但是直到你的設(shè)計(jì)被復(fù)用多次,你才可以談成功的設(shè)計(jì)。可復(fù)用性是旁觀者來下結(jié)論的,而不是設(shè)計(jì)者自己。

b.可復(fù)用性必須有完備的文檔

文檔必須標(biāo)識出,什么時(shí)候不要復(fù)用它,這樣開發(fā)者才能理解合適場景的上下文。

c.復(fù)用是一種態(tài)度

當(dāng)你設(shè)計(jì)新的系統(tǒng)架構(gòu)的時(shí)候,第一件事應(yīng)該是決定你的架構(gòu)還會以怎樣的方式在別的場合被復(fù)用。也許有些人已經(jīng)設(shè)計(jì)了你需要的東西。另一方面,你得主動分享你的工作成果,這樣大家才可以復(fù)用它。一個(gè)好領(lǐng)隊(duì)會在團(tuán)隊(duì)中持續(xù)地尋找復(fù)用點(diǎn)和提升、獎勵復(fù)用的機(jī)會。一個(gè)不錯(cuò)的方式就是在從這樣兩個(gè)方面去尋找可復(fù)用的機(jī)會:模型評審過程中,尋找繼承和模式復(fù)用的機(jī)會;代碼走讀過程中,尋找組件和代碼復(fù)用的機(jī)會。



提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: