恭喜你发现了宝藏,编程习惯-日积月累
總結(jié):
-
條件查詢可在數(shù)據(jù)庫(kù)層創(chuàng)建queryDto進(jìn)行統(tǒng)一操作。
-
代碼復(fù)用:若有代碼重復(fù)出現(xiàn)了三次,很大概率可以重構(gòu)。(三則重構(gòu))
-
dto和entity中的賦值操作,可以寫成方法放在dto中。(充血模型)
-
dto中不寫id,id是前端另外傳過(guò)來(lái)或后端生成的。(冪等)
-
取和存數(shù)據(jù)相同時(shí),可只用entity一個(gè)數(shù)據(jù)傳輸對(duì)象。
-
使用框架、工具類的代碼不可直接在業(yè)務(wù)層引入(業(yè)務(wù)就是業(yè)務(wù),工具可以包裝調(diào)用),操作數(shù)據(jù)需統(tǒng)一通過(guò)持久化層進(jìn)行封裝(持久層與業(yè)務(wù)層代碼隔離)。
-
領(lǐng)域、對(duì)象的命名需使用名詞,不可有歧義。若命名不理想,需商討。(軟件設(shè)計(jì)很重要的一點(diǎn):如何命名)
-
接口對(duì)外暴露地址要語(yǔ)義明確,單詞間使用 “-” 分割(簡(jiǎn)短精確!restful)
-
當(dāng)領(lǐng)域中有相似功能實(shí)現(xiàn)時(shí),有三種數(shù)據(jù)庫(kù)設(shè)計(jì)方式:
? (1)將所有字段合并在一張表中,各業(yè)務(wù)留冗余為空的字段。【不使用】
? (2)抽離出公共屬性字段,獨(dú)立成表,在使用時(shí)關(guān)聯(lián)相關(guān)獨(dú)立業(yè)務(wù)表查詢。【符合第三范式,但在查詢時(shí)需要掃描連表查詢,使用較少】
? (3)在實(shí)際使用中,常常使用水平拆分,降低單庫(kù)(一張表)的數(shù)據(jù)量,使用反范式設(shè)計(jì)來(lái)滿足不同維度上的查詢需求。將兩張表中的查詢展示數(shù)據(jù)抽離在一張表中,保留一定的數(shù)據(jù)冗余,通過(guò)標(biāo)志位區(qū)分不同業(yè)務(wù)。其余的一些下一階段的查詢存放于各自的單表中。實(shí)現(xiàn)冗余和查詢功能的中和。【使用較多】
-
前后端有關(guān)時(shí)間類型的傳輸要保證準(zhǔn)確,統(tǒng)一使用編程語(yǔ)言中的時(shí)間類型進(jìn)行傳輸,而不采用String,具體使用再進(jìn)行不同的轉(zhuǎn)化。
-
每一個(gè)實(shí)體所包含的字段,應(yīng)該具有該實(shí)體的唯一使用場(chǎng)景。如:游戲中的"預(yù)約數(shù)",該字段雖為游戲本身屬性,但只針對(duì)"預(yù)約游戲",而非所有的游戲(包含已上線的游戲),這時(shí),應(yīng)將 預(yù)約數(shù)量獨(dú)立出來(lái),而非與"游戲"實(shí)體的固有屬性存放在一張數(shù)據(jù)庫(kù)表中。
-
領(lǐng)域之間的松耦合:一個(gè)領(lǐng)域中使用一個(gè)service,同一個(gè)Repository只在對(duì)應(yīng)領(lǐng)域中的一個(gè)service中出現(xiàn)。若兩個(gè)領(lǐng)域中有業(yè)務(wù)上的交互,那么應(yīng)該由被調(diào)用方抽離出被調(diào)用的方法,提供調(diào)用接口(如:GameServiceFacade)給調(diào)用方使用。若業(yè)務(wù)不復(fù)雜或交互點(diǎn)不多時(shí),也可直接進(jìn)行service層的互調(diào)。
-
測(cè)試
? (1)為了利于編碼測(cè)試,可以在業(yè)務(wù)層進(jìn)行改造,改造方式有兩種:1、修改repo的注入方式,將mock包裹的repo對(duì)象注入service中的repo;2、修改業(yè)務(wù)層邏輯,將獨(dú)立的repo邏輯剔出,放在controller統(tǒng)一調(diào)用。
? (2)能不使用mock進(jìn)行隔離則不進(jìn)行mock隔離,保證代碼在功能上的獨(dú)立測(cè)試性。
關(guān)于測(cè)試:如果你的代碼功能不利于單元測(cè)試,那么你的代碼多半是有毛病的(很大的重構(gòu)空間和優(yōu)化空間)
- k8s是個(gè)好東西,不要拒絕難度高的技術(shù)選型。
- 允許數(shù)據(jù)結(jié)構(gòu)上的字段冗余,權(quán)衡利弊,這個(gè)需要經(jīng)驗(yàn)。
- 少用繼承(extents),多用組合(implement)。其實(shí)工作中我?guī)缀醪粫?huì)用繼承,徒增復(fù)雜度。
引用一下:我的觀點(diǎn)沒那么極端!之所以“多用組合少用繼承”這個(gè)口號(hào)喊得這么響,只是因?yàn)?#xff0c;長(zhǎng)期以來(lái),我們過(guò)度使用繼承。
還是那句話,組合并不完美,繼承也不是一無(wú)是處。只要我們控制好它們的副作用、發(fā)揮它們各自的優(yōu)勢(shì),在不同的場(chǎng)合下,恰當(dāng)?shù)剡x使用繼承還是組合,這才是我們所追求的境界。
更新:2021-10-19
總結(jié)
以上是生活随笔為你收集整理的恭喜你发现了宝藏,编程习惯-日积月累的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gradle错误提示:Java home
- 下一篇: Gradle 将项目publish到Ne