GoFrame 工程開(kāi)發(fā)設(shè)計(jì)-結(jié)構(gòu)化編程設(shè)計(jì)

2022-03-29 15:47 更新

一、基本介紹

結(jié)構(gòu)化編程,簡(jiǎn)單來(lái)理解,就是通過(guò)定義結(jié)構(gòu)體傳遞和返回參數(shù)。

我們建議在必要的場(chǎng)景下使用結(jié)構(gòu)化定義來(lái)管理輸出/輸出,尤其是在?controller?和?service?兩層的代碼設(shè)計(jì)中。

1、controller非結(jié)構(gòu)化痛點(diǎn)

image2022-1-25_16-27-27

  • 難以確定接口輸入/輸出數(shù)據(jù)結(jié)構(gòu),大多數(shù)的場(chǎng)景是在代碼中硬編碼參數(shù)接收名稱,易把名稱寫(xiě)錯(cuò)造成不可預(yù)料的問(wèn)題
  • 接口參數(shù)往往只定義一個(gè)?HttpRequest/HttpContext?對(duì)象指針,執(zhí)行結(jié)果直接寫(xiě)入到對(duì)象,難以確定接口是否成功/失敗
  • 參數(shù)接收、校驗(yàn)、轉(zhuǎn)換處理工作繁瑣
  • 接口文檔生成以及維護(hù)極為困難

2、service非結(jié)構(gòu)化痛點(diǎn)

image2022-1-14_1-18-3

  • 當(dāng)方法參數(shù)較多的時(shí),定義丑陋,使用別扭
  • 當(dāng)方法參數(shù)數(shù)量、類型不太確定時(shí),任意的參數(shù)變化都是非兼容的,會(huì)引起較高的修改成本
  • 方法參數(shù)注釋不簡(jiǎn)便,以至于絕大部分業(yè)務(wù)項(xiàng)目都不會(huì)有方法參數(shù)注釋

二、結(jié)構(gòu)化編程

1、controller結(jié)構(gòu)化改進(jìn)

結(jié)構(gòu)化優(yōu)點(diǎn):

  • 通過(guò)結(jié)構(gòu)化管理接口輸入/輸出參數(shù),參數(shù)接收不再需要硬編碼參數(shù)名稱,降低維護(hù)成本,避免參數(shù)名稱硬編碼錯(cuò)誤問(wèn)題
  • 可以做到自動(dòng)化的參數(shù)接收、轉(zhuǎn)換、校驗(yàn),提高生產(chǎn)力
  • 使得接口管理能夠像普通的函數(shù)管理那么方便,通過(guò)返回?error?來(lái)判斷接口處理結(jié)果,并可以規(guī)范化統(tǒng)一錯(cuò)誤機(jī)制
  • 使得自動(dòng)化的接口文檔生成變?yōu)榱丝赡埽⒈U狭私涌诮Y(jié)構(gòu)定義和接口文檔同步維護(hù)

結(jié)構(gòu)化示例:

結(jié)構(gòu)定義:

image2022-1-14_1-21-4

方法使用:

image2022-1-14_1-20-7

2、service結(jié)構(gòu)化改進(jìn)

結(jié)構(gòu)化優(yōu)點(diǎn):

  • 當(dāng)方法參數(shù)較多的時(shí),通過(guò)結(jié)構(gòu)體優(yōu)雅管理參數(shù)
  • 當(dāng)方法參數(shù)數(shù)量、類型不太確定時(shí),參數(shù)的增加對(duì)方法調(diào)用來(lái)說(shuō)都是兼容性的
  • 對(duì)結(jié)構(gòu)體屬性的注釋描述更加便捷,提高代碼維護(hù)質(zhì)量

結(jié)構(gòu)化示例:

image2022-1-14_22-50-23

三、注意事項(xiàng)

  • ?service?層的方法在使用結(jié)構(gòu)化管理輸入/輸出參數(shù)時(shí),結(jié)構(gòu)體中任意參數(shù)都將會(huì)被看做非必需參數(shù)。因此需要根據(jù)業(yè)務(wù)場(chǎng)景合理評(píng)估可行性。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)