量化金融分析師(AQF)|程序員軟件開發(fā)必須了解的8大思想,你能做到幾個(gè)呢?
1.開發(fā)工具(包括語言)自身的思想
每一種語言或開發(fā)工具都有特定的目的,用來解決什么類型的問題,其特點(diǎn)、優(yōu)點(diǎn)是什么,比如當(dāng)前流行的JAVA、PYTHON、.net,理解他們的最大優(yōu)勢(shì)是什么。
2.設(shè)計(jì)模式中提到的6大設(shè)計(jì)原則
A.單一職責(zé)原則:
從業(yè)務(wù)的角度規(guī)范模塊或單元?jiǎng)澐址秶慕缦?,即業(yè)務(wù)模塊的外在界限;
B.里式替換法則:
通俗的講,就是面向?qū)ο螅ㄆ鋵?shí)不僅僅限于面向?qū)ο螅┑睦^承,其概念是“凡是對(duì)象A出現(xiàn)的地方,都能被對(duì)象B替換”,滿足這種情況,就應(yīng)該設(shè)計(jì)成繼承結(jié)構(gòu),即BextendsA.
C.ioc或DI法則:
即依賴注入或控制反轉(zhuǎn),大名鼎鼎的開源機(jī)構(gòu)Spring,將這一思想體現(xiàn)的淋漓盡致,具體思路就是具體依賴抽象,由“主動(dòng)”的“拉”,轉(zhuǎn)化為“被動(dòng)”的“推”,且被推的目標(biāo)在編譯時(shí)是不確定的,在運(yùn)行時(shí)動(dòng)態(tài)綁定。這里用到很重要的一個(gè)思想,“接口”編程,依賴關(guān)系傳入接口,具體的實(shí)現(xiàn)在運(yùn)行時(shí)指定,一般通過XML配置推入。
D.接口分離原則:
契約(接口定義的功能)并不是越多越好,功能越多,責(zé)任(具體的實(shí)現(xiàn))代價(jià)也越大,因此從業(yè)務(wù)的角度加以劃分接口要提供的最“干凈”的功能,比如,對(duì)應(yīng)美的觀點(diǎn),有豐腴,也有苗條,如果合并在一個(gè)接口中,雖然編碼上沒問題,但給人的感覺挺矛盾與怪異,這種情況下,顯示拆分在2個(gè)接口比較合理。
E.迪米特法則:
看過電視劇的人,經(jīng)常聽到熟悉的臺(tái)詞:“A:為什么?”,“B:你知道的太多了…”.
如果說單一職責(zé)法則、接口分離法則是對(duì)對(duì)象內(nèi)部的規(guī)范要求的話,那么,IOC、迪米特法則則是基于對(duì)象之間依賴性約束的相關(guān)規(guī)范,它與IOC一樣,出發(fā)點(diǎn)都是“解耦”達(dá)到低耦合的目的,解耦是需要代價(jià)的,一般至少引入一個(gè)中間層,引入的中間層越多,與目標(biāo)的耦合越低,這其實(shí)分層思想的一個(gè)典型應(yīng)用,其實(shí)這里還有一個(gè)隱形原則,就是依賴的路線較好是單線(1:1),而不是樹或網(wǎng)狀對(duì)應(yīng)關(guān)系(1:n,n:m),舉例,有老師、學(xué)生2個(gè)對(duì)象,老師與學(xué)生直接耦合,如果解耦,可以引入班長(zhǎng)或課代表這個(gè)中間角色,這樣就有3個(gè)角色了,這時(shí),三者之間有如下幾種依賴圖:
老師———————-<班長(zhǎng)(或課代表)——————————<學(xué)生
A.單線依賴關(guān)系
B.非單線依賴關(guān)系
可以看到b類型的依賴關(guān)系,老師不僅要依賴班長(zhǎng),還有依賴學(xué)生,產(chǎn)生多重依賴,“知道的太多”,不是一個(gè)好的解耦方式,而A就是正確的迪米特法則的實(shí)現(xiàn)體現(xiàn);
F.開閉法則:
這種主要是針對(duì)編碼時(shí)的規(guī)范要求,即對(duì)新增方法開放,對(duì)已有的方法進(jìn)行修改是關(guān)閉,也就是保留已經(jīng)成熟的實(shí)現(xiàn)方法,如果需求有變動(dòng),通過增加新的方法,將影響度降低到最低,特別是新舊版本發(fā)布的時(shí)候,有些還在途未處理的業(yè)務(wù),依舊需要沿用原有的業(yè)務(wù)邏輯。
3.分層思想
這里的分層,是針對(duì)架構(gòu)層次的分層,典型的WEB應(yīng)用一般都會(huì)進(jìn)行分層,比如展示層、業(yè)務(wù)邏輯層、領(lǐng)域模型層、數(shù)據(jù)訪問層,這就是典型的分層思想,這樣的好處是.方便軟件的復(fù)用、維護(hù),減少維護(hù)成本,也方便架構(gòu)的伸縮、擴(kuò)展性;SPRINGMVC也是典型分層系統(tǒng)的實(shí)現(xiàn);
>>>點(diǎn)擊咨詢python編程基礎(chǔ)課程
4.接口開發(fā)思想
上面設(shè)計(jì)原則中的IOC原則以及提到,這里也是為了強(qiáng)調(diào)接口開發(fā)的好處,通過引入接口層,使模塊或組件之間的依賴通過接口來耦合,不是具體的實(shí)現(xiàn)來耦合,這樣做的好處有以下幾種:
1.RPC調(diào)用,將接口與實(shí)現(xiàn)分類,方便客戶端、服務(wù)端的隔離,對(duì)客戶端而言,實(shí)現(xiàn)改變了,不影響客戶端的編譯;
2.通過接口依賴,實(shí)現(xiàn)解耦,方便業(yè)務(wù)拓展、變動(dòng)引起的不變維護(hù),將影響降到最低;
3.方便軟件的重用,更好的結(jié)合設(shè)計(jì)模式中的具體模式嵌入。
5.配置的思想
常用的配置文件格式有property,xml等,其好處是配置做了改動(dòng)后,不需要重新編譯,重啟應(yīng)用即可生效(有些應(yīng)用可以動(dòng)態(tài)提取,不用重啟應(yīng)用),特別是容器管理配置的維護(hù),真正達(dá)到“四兩撥千斤”的效果,ibatis、mybatis的mapper思想就是較好的體現(xiàn),通過動(dòng)態(tài)維護(hù)XML中的映射語句,到達(dá)動(dòng)態(tài)訪問業(yè)務(wù)數(shù)據(jù)的功能。
6.分離的思想
這里的分離是一個(gè)很廣泛的思想,小到代碼模塊單元,大到服務(wù)、子系統(tǒng),都含有分離的思想,包括配置都包含若干分離思想的應(yīng)用,之所以如此,主要是分布環(huán)境、多人開發(fā)團(tuán)隊(duì)協(xié)作給軟件開發(fā)驅(qū)動(dòng)的必然結(jié)果,方便治理也好、方便維護(hù)也罷,總之其目的不一而足。
7.分頁的思想
隨著系統(tǒng)業(yè)務(wù)量的增加,數(shù)據(jù)量也會(huì)同步增長(zhǎng),對(duì)數(shù)據(jù)的提取與導(dǎo)出帶來了性能上的壓力,數(shù)據(jù)分頁是十分有必要的,具體包括前臺(tái)分頁(js相關(guān)插件)、后臺(tái)分頁(數(shù)據(jù)庫的分頁或?qū)Σ樵兂龅慕Y(jié)果集進(jìn)行計(jì)算分頁),這樣會(huì)極大提高系統(tǒng)的性能。
8.異步調(diào)用的思想
對(duì)于復(fù)雜或交互量大的系統(tǒng),往往需要與周邊系統(tǒng)進(jìn)行交互數(shù)據(jù),一般需要通過RPC的方式進(jìn)行調(diào)用,如果每包的數(shù)據(jù)量比較大,調(diào)用比較頻繁,如果同步方式處理,對(duì)系統(tǒng)的性能要求比較大,而采用異步方式,則極大改善性能,特別是對(duì)實(shí)時(shí)性不高的業(yè)務(wù)。
掃描下方二維碼了解更多精彩內(nèi)容喲!
.png)


.png)


