V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Hormazed
V2EX  ›  程序员

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

  •  
  •   Hormazed ·
    PRO
    · 15 小时 10 分钟前 via iPhone · 1189 次点击

    如下是一次线上 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);
    

    }

    风险点:

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

    8 条回复    2026-02-13 12:23:24 +08:00
    IPv6Shen
        1
    IPv6Shen  
       14 小时 21 分钟前   ❤️ 3
    使用 vibe coding ,把你的这些最佳实践添加到 rules 里面,大家都用 AI 写代码,写出来的代码都是符合规范的 从维护代码一致性转变为维护 rules
    litchinn
        2
    litchinn  
       13 小时 58 分钟前
    如果是小团队,我觉得凑合凑合得了,如果你的团队规模比较大,我的建议是不仅要提出规范,更要同步给出工具帮助开发者
    例如:自定义静态检查,封装 sdk 、IDE 插件等
    Hormazed
        3
    Hormazed  
    OP
    PRO
       13 小时 26 分钟前 via iPhone
    团队规模上百人、内网隔离、无法依赖互联网或 AI 能力统一接管开发入口,很多规范目前只能依赖人工事后弥补。变更后没发现问题是常有的事情,这是一个难题。

    例如最近发现的一个细节问题——文件权限异常:
    -rw-rw-rw- 1 root root 21M Feb 08 18:34 20260208001.p
    -rw-r--r— 1 root root 21M Feb 09 18:34 20260209001.p
    sentinelK
        4
    sentinelK  
       12 小时 49 分钟前
    code review 是不是没做?像这种延时 1 秒的硬编码,是怎么通过审核的?
    设计文档写了吗?如果写了,同步调用远端这种设计流程是怎么过的?
    Hormazed
        5
    Hormazed  
    OP
    PRO
       12 小时 40 分钟前 via iPhone
    在实际执行过程中,一旦流程被熟悉,很多发布工作往往由一个人即可独立完成。从提交到上线,各类环节都能“顺利走通”。随之而来的一个现实问题是:部分质量控制手段逐渐形式化。

    例如:
    1.Code Review 偏向流程确认,缺少实质性问题讨论
    2.设计文档更多是基于模板补充,实际设计思考有限
    3.审核与签字成为流程节点,而非质量关口
    sentinelK
        6
    sentinelK  
       12 小时 33 分钟前
    所以流程都失效了,讨论管理还有什么意义……
    Hormazed
        7
    Hormazed  
    OP
    PRO
       12 小时 26 分钟前 via iPhone
    目前处理两个方向:规范管理,定期淘汰换人,避免后者是会被误解为业务下行。
    lusi1990
        8
    lusi1990  
       11 小时 7 分钟前 via iPhone
    1.
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2153 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:30 · PVG 23:30 · LAX 07:30 · JFK 10:30
    ♥ Do have faith in what you're doing.