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