最近跟一個(gè)師兄吃飯,聊到他在微軟的工作,感嘆超過(guò)1萬(wàn)人維護(hù)了30年的office軟件,不得不說(shuō),一個(gè)軟件,能夠在如此多平臺(tái),如此多歷史版本中還能不斷地迭代,還能把兼容性做得如此之好真是不容易。聊到一些中美程序員的差異,中國(guó)的互聯(lián)網(wǎng)公司大多追求短平快,大部分地程序員并非軟件工程專(zhuān)業(yè)出生,軟件工程在大學(xué)也是一門(mén)比較無(wú)足輕重地必修課。但在國(guó)外,很多公司會(huì)給你充足的時(shí)間,讓你慢慢把軟件做好,做好的最重要一點(diǎn),便是可維護(hù)。無(wú)論你的設(shè)計(jì)有多么巧妙,算法有多么高深,這些都不是好代碼的標(biāo)準(zhǔn),好的代碼是可以給一個(gè)團(tuán)隊(duì)不停地維護(hù),迭代中,不輕易出現(xiàn)混亂與差錯(cuò)。
編程這個(gè)行業(yè)在我國(guó)盛行,也不到20年的歷史,真正流行并快速發(fā)展的,也只有最近十年。以往在大多數(shù)公司里面,開(kāi)發(fā)的規(guī)范比較少,大家各成一派,有著自己的風(fēng)格,不過(guò)這幾年,國(guó)內(nèi)的一些開(kāi)發(fā)規(guī)范慢慢盛行起來(lái)。今天我們來(lái)簡(jiǎn)單聊一聊阿里巴巴推出的JAVA開(kāi)發(fā)規(guī)范中的服務(wù)分層。
業(yè)務(wù)分層在我們的開(kāi)發(fā)中非常的常見(jiàn),好處也是非常多,首先是業(yè)務(wù)分層讓分工更加明確,邏輯更加清晰,更好地進(jìn)行維護(hù)。其次業(yè)務(wù)分層可以讓代碼更加容易復(fù)用,舉個(gè)簡(jiǎn)單例子,我們通常會(huì)把跟數(shù)據(jù)庫(kù)交互的代碼收攏到一個(gè)DAO層,如果你不這么做,會(huì)有什么問(wèn)題呢?假如某一天我們對(duì)表結(jié)構(gòu)進(jìn)行表更,新增或者替換了字段,我們可能要修改非常多處的代碼,令人頭疼。最后是讓業(yè)務(wù)更加容易擴(kuò)展,那一層有性能問(wèn)題,我們可以針對(duì)那一層該加機(jī)器就加機(jī)器,該優(yōu)化就進(jìn)行優(yōu)化。
在業(yè)務(wù)邏輯層,會(huì)處理通用的業(yè)務(wù),例如電商系統(tǒng)中的交易成單接口,會(huì)調(diào)用商品,優(yōu)惠,會(huì)員等多個(gè)子系統(tǒng),完成成單服務(wù)。在業(yè)務(wù)邏輯層中,一些通用的業(yè)務(wù)會(huì)被抽象出來(lái),放到Manage層,我們還是舉電商交易成單的例子,我們有一個(gè)訂單查詢(xún)接口,但是這個(gè)查詢(xún)接口不太想去理解太多業(yè)務(wù)邏輯,例如交易的類(lèi)型,業(yè)務(wù)方,訂單的狀態(tài)等等,可以由Service層去理解這些邏輯,然后調(diào)用Manage層對(duì)應(yīng)的查詢(xún)接口。Service層接口與Manage層都可以訪問(wèn)后方的DAO層,DAO層主要負(fù)責(zé)與數(shù)據(jù)庫(kù)交互,不理解業(yè)務(wù)邏輯。
所以,我們?cè)陂_(kāi)發(fā)項(xiàng)目的過(guò)程中,雖然不用完全按照這個(gè)規(guī)范,但也至少也把項(xiàng)目分成若干個(gè)層次,這樣,才能讓代碼更容易閱讀與維護(hù)。
-
JAVA
+關(guān)注
關(guān)注
20文章
2992瀏覽量
114826 -
編程
+關(guān)注
關(guān)注
89文章
3704瀏覽量
96267 -
阿里巴巴
+關(guān)注
關(guān)注
7文章
1642瀏覽量
48782
發(fā)布評(píng)論請(qǐng)先 登錄
博世與阿里巴巴集團(tuán)深化戰(zhàn)略合作
普華基礎(chǔ)軟件蒞臨阿里巴巴達(dá)摩院調(diào)研交流
阿里云爆發(fā)式的跨越

評(píng)論