写在前面

以下每一条都来自真实的踩坑教训,按"违反时的代价"从高到低排列。

正文

  1. 配置与代码分离。数据库地址、密钥永远不进代码仓库,环境变量或配置中心管理。泄漏一次就足够致命。
  2. 所有外部调用必须设超时。HTTP 客户端、数据库驱动、Redis 客户端,默认不设超时的库都会在对方卡死时拖垮你。
  3. 日志要能定位问题。关键链路打 traceId;日志带上下文(参数、耗时、结果状态);ERROR 只留给需要人工介入的事。
  4. 重试要配合幂等。网络抖动重试是应该的,但下游接口必须幂等,否则一次超时重试就是两笔订单。
  5. 分支合并前必须过 CI。编译、单测、lint 三件套卡在合并前,而不是部署后。坏代码进 main 的成本是卡在分支上的十倍。
  6. 数据库变更走迁移脚本。手动改表结构的环境,迟早和代码版本不一致导致无法回滚。
  7. 命名宁可长而清楚。retryCountForPaymentGateway 好过 n。代码写一次,读很多次。
  8. 删掉的代码就删干净。注释掉的旧代码放两周就没人敢删了,Git 历史本来就是备份。
  9. 上线变更要可回滚。每次发布前问自己一句:出问题怎么退?回答不了的发布不上。
  10. 文档跟着代码走。接口文档、部署步骤过时比没有更糟。CI 里加文档检查或用代码即文档的工具。

一条隐藏规则

规范本身不重要,重要的是全组用同一套。风格不一致的代码库,维护成本比任何单个坏习惯都高。