大家好,我是程序員魚皮。
很想吐槽:我真的不想寫增刪改查這種重復代碼了!
大學剛做項目的時候,就在寫增刪改查,萬萬沒想到 7 年后,還在和增刪改查打交道。因為增刪改查是任何項目的基礎功能,每次帶朋友們做新項目時,為了照顧更多同學,我都會帶大家把增刪改查的代碼再編寫并講解一遍。
不開玩笑地說,我絕對有資格在簡歷上寫 “自己精通增刪改查的編寫” 了!
相信很多已經在工作中的小伙伴,80% 甚至更多的時間也在天天寫增刪改查這種重復代碼,也會因此感到煩惱。那大家有沒有思考過:如何提高寫增刪改查的效率?讓自己有更多時間進步(愉快摸魚)呢?
其實有很多種方法,魚皮分享下自己的提效小操作,看看朋友們有沒有實踐過~
如何提高增刪改查的編寫效率?
方法 1、復制粘貼
復制粘貼前人的代碼是一種最簡單直接的方法,估計大多數開發者在實際工作中都是這么干的。
但這種方式存在的問題也很明顯,如果對復制的代碼本身不夠理解,很有可能出現細節錯誤。而且不同數據表的字段和校驗規則是不同的,往往復制后的代碼還要經過大量的人工修改。
還有很多 “小迷糊”,經常復制完代碼后忘了修改一些變量名稱和注釋,出現類似下面代碼的名場面:
// 帖子接口
class UserController {
}
方法 2、使用模板
一般新項目都是要基于模板開發的,而不是每次都重復編寫一大堆的通用代碼。比如我之前給編程導航同學編寫的 Spring Boot 后端萬用模板,內置了用戶注冊、賬號密碼登錄、公眾號登錄等通用能力。基于這種模板二次開發,能夠大大提高開發效率,也有助于開發同學遵循一致的規范。
然而,使用模板也存在一些風險,如果模板本身有功能存在漏洞,那么所有基于這個模板開發的項目可能都會存在風險。而且別人的模板也不是萬能的,建議還是根據自己的開發經驗,自己沉淀和維護一套模板。對團隊來說,沉淀模板是必須要做的事。
方法 3、AI 工具
利用 AI 工具來生成增刪改查的代碼是一種新興的方法。只需要甩給 AI 要生成代碼的表結構,然后精準地編寫要生成的代碼要求,就可以讓 AI 快速生成了。
這種方式的優點是非常靈活,能幫開發者提供一些靈感;缺點就是對編寫 prompt(提示詞)的要求會比較高,而且生成后的代碼還是得仔細檢查一遍的。
方法 4、超級抽象
這是一種更高級別的代碼復用方法。通過設計 通用的 數據模型和操作接口,實現用一套代碼滿足多種不同業務場景下的增刪改查操作。
舉個例子,如果有帖子、評論、回答等多個資源需要支持用戶收藏功能,系統規模不大的情況下,不需要編寫 3 張不同的收藏表、并分別編寫增刪改查代碼。而是可以設計 1 張通用的收藏表,通過 type 字段來區分不同類型的資源,從而實現統一的收藏操作。
像點贊、消息通知、日志、數據收集等業務場景,都可以采用這種方式,通過極致的復用完成快速開發。
但也要注意,千萬不要把區別較大的功能強行合并到一起,反而會增加開發者的理解成本;而且如果系統數據量較大,分開維護表更有利于系統的性能和穩定性。
方法 5、代碼生成器
這也是非常典型的一種提高增刪改查效率的方法。后端可以使用 MyBatis X 插件來生成數據模型和數據訪問層的 Mapper 代碼,前端可以用 OpenAPI 工具生成請求函數和 TS 類型代碼等。
不過用別人的生成器難免會出現無法滿足需求的情況,生成后的代碼一般還是要自己再修改一下的。
所以,我建議可以使用模板引擎技術,自己開發一套更靈活、更適合自己業務的代碼生成器。
比如魚皮給后端萬用模板補充了代碼生成器功能,使用 FreeMarker 模板引擎技術實現,定制了 Controller、Service、數據包裝類的代碼模板。用戶只需要指定幾個參數,就可以在指定位置生成代碼了~ 昨天 AI 答題應用平臺的開發中,就是用了這個代碼生成器,幾分鐘寫好一套功能。
可以在代碼小抄閱讀生成器的核心實現代碼:https://www.codecopy.cn/post/edkpo4 。之前我從 0 到 1 直播帶大家開發過一個 代碼生成器共享平臺 ,感興趣的同學也可以學習下,保證能把代碼生成玩得很熟練~
方法 6、云服務
這種方式也比較新穎了,利用某些云服務提供的現成的數據庫和操作數據庫的接口,都不需要自己去編寫增刪改查了!
比如我之前用過的騰訊云開發 Cloudbase,開通服務后,只要在平臺上建號數據表,就能自動得到數據管理頁面,可以直接通過 HTTP 請求或 SDK 實現增刪改查,尤其適合前端同學使用。
但這種方式的缺點也很明顯,靈活性相對差了一些,而且會產生一些額外的費用。
所以還是那句話,沒有最好的技術,只有最適合自身需求和業務場景的技術。
以上就是本期分享,也歡迎朋友們留言分享自己的好方法。
可訪問我的 Github:https://github.com/liyupi ,了解更多技術和項目內容。