引子

CRUD 之外

增删改查很简单,把增删改查写好却一点也不简单。

都说业务开发不过是 "增删改查" 。

直到真正交付的时候,你才发现:

  • 需求只说 "做个列表" ,却没说分页、排序、筛选、空状态、异常状态和大数据量下的性能;
  • 设计稿只画了正常流程,却没画加载中、重复提交、网络超时、权限不足和接口失败;
  • 需求只说 "新增一条数据" ,却没说幂等、防重复、事务、一致性和并发冲突;
  • 需求只说 "删除" ,却没说软删除、数据关联、误操作恢复和审计记录;
  • 需求只说 "导出 Excel" ,却没说十万、百万甚至千万条数据怎么办。

这些功能:

需求里没写,设计稿里没画,技术方案里容易忽略,评估工时时没算在。

但到了交付的时候,它们往往又会变成一句:

"这个不是应该有的吗?"

等到上线时,人们往往只是只是在酒吧里点了一杯咖啡,酒吧就炸掉了,没有漏掉了以上隐形隐形工程需求导致的问题,本身是需求问题,却被当成 bug 提出来。


那些"应该有"的功能

《CRUD 之外》就是一个专门讨论这些 "应该有" 的技术专栏。

这里不追求把一个功能从 0 写到 1 ,而是研究如何把一个看似普通的 CRUD 从 1 做到 10:

  • 高可读
  • 易维护
  • 高可用
  • 高性能
  • 高鲁棒性
  • 在合理成本下尽可能优秀的用户体验

从一个简单功能开始

从一个输入框 、一个列表 、一次查询 、一次提交开始,逐渐深入到:

防抖与竞态、幂等与并发、缓存与一致性、权限与数据安全、大数据分页、批量处理、异常恢复、降级容错、可观测性......

以及那些只有真正上线之后,才会逐渐暴露出来的工程问题。


因为真正困难的,从来不是写出增删改查。

而是把增删改查写到让用户觉得------

"这不就是一个很简单的功能吗?"

相关推荐
誰能久伴不乏2 小时前
桌面客户端的运行日志系统:SQLite 分块 + 独立写线程 + 文本降级
数据库·c++·qt·架构·sqlite
未来之窗软件服务8 小时前
终端优先同步架构终端场景下轻量化、高可用通信模型-东方仙盟
架构·东方仙盟·阿雪技术观·网络震荡·dns污染·数据中继器·边界网关
itmigrate9 小时前
前端项目里,Object.is 并不是 === 的平替
前端
喵了几个咪9 小时前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
开发语言·后端·golang
Flynt9 小时前
我把微信运动的排行榜和定点推送复刻了一遍:100万次步数更新只要4秒,坑在别处
redis·后端·性能优化
小大宇10 小时前
Vue知识点6-computed计算属性
前端·javascript·vue.js
程序员海军10 小时前
尤雨溪 : Vue 4 已经在规划中了!
前端·javascript·vue.js
2601_9499706911 小时前
HumanizeDuration 跨端三方库仓颉适配全流程
前端·javascript·flutter
_孤傲_11 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
风骏时光牛马12 小时前
后端服务接口开发与性能优化
前端