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 条回复
添加回复
你还需要 登录
后发表回复
使用 vibe coding ,把你的这些最佳实践添加到 rules 里面,大家都用 AI 写代码,写出来的代码都是符合规范的 https://i.imgur.com/agAJ0Rd.png 从维护代码一致性转变为维护 rules