GoForum🌐 V2EX

如何平衡程序员的代码执行规范严谨性和工作自由度?

Hormazed · 2026-02-13 08:22 · 0 次点赞 · 1 条回复

如下是一次线上 paas 平台内的 java 包邮件发送异常,就是一个典型案例。实际发生问题,程序员言之凿凿自己代码没问题,然后大家一起过代码排查结果,问题如下

如何把研发标准从制定标准落实到代码管理规范中?逐渐形成一种思维模式和惯性,而不是发现问题解决问题,比如:超实,数据获取方式,异步处理,这些参数的使用和定义能否从项目开始就顺手写出更健壮的代码?发家如何看待这些问题?请多指教

问题 1 (致命):SMTP 超时设置为 1 秒

prop.setProperty(“mail.smtp.timeout”, “1000”);

风险点,高峰期频繁出现

SocketTimeoutException: Read timed out ,被误判为数据库或邮件系统问题。

问题 2:未设置连接和写入超时

mail.smtp.connectiontimeout

mail.smtp.writetimeout

风险点:

网络波动时连接长时间阻塞,大附件发送过程中线程被占用,在高并发下容易形成线程堆积

问题 3:同步 HTTP 线程直接发送邮件

javaMailSender.send(mimeMessage); 运行在进程:XNIO-1 task-*

风险点:SMTP 属于慢 IO 操作,高并发多附件容易卡住,高并发情况下可能导致接口响应变慢甚至线程耗尽

问题 4:附件加载方式不稳定

mimeMessageHelper.addAttachment(

attachment.getFileName(),

getInputStreamSourceFromUrl(attachment.getUrl())

);

风险:

网络耗时叠加,超时概率显著增加,整体发送时长不可控

问题 5:异常处理过于笼统,未做错误判断处理

catch (Exception e) {

log.error("邮件发送失败,错误信息:", e);

}

风险点:

无法区分认证、连接、超时等问题,定位困难,缺乏可观测性。

1 条回复
IPv6Shen · 2026-02-13 09:12
#1

使用 vibe coding ,把你的这些最佳实践添加到 rules 里面,大家都用 AI 写代码,写出来的代码都是符合规范的 https://i.imgur.com/agAJ0Rd.png 从维护代码一致性转变为维护 rules

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: Hormazed
发布: 2026-02-13
点赞: 0
回复: 0