方法参数数量须≤3个(最多5个),超限需封装为JavaBean;main参数须用CLI库结构化解析;参数命名须具业务语义,基本类型优先用包装类,必填参数用requireNonNull校验,可选参数用Builder或Optional;引用类型默认只读,禁止原地修改。

方法参数数量要严格控制
团队统一规定:普通业务方法参数不超过3个,最多放宽至5个。超出即视为设计缺陷,必须封装为JavaBean对象。这不是可选项,而是硬性约束。例如签名加密方法若含证书、密码、参数、公钥、私钥等,直接拆成 SignRequest 类,字段命名清晰、类型明确、可复用、可校验。
main 方法参数需结构化处理
main(String[] args) 是程序对外接口,参数必须有规范解析逻辑。禁止直接用 args[0]、args[1] 硬编码取值。应统一使用命令行解析库(如 Apache Commons CLI 或 picocli),支持 --env=dev、-f config.yml 等语义化格式,并内置参数校验与帮助提示。启动脚本中也要同步维护参数说明,避免“改了代码却忘了更新文档”。
所有参数传递必须明确契约
每个方法签名要体现其职责边界:
- 参数名不能是 param1、obj 这类模糊命名,而应是 userId、orderStatus 等业务语义名
- 基本类型参数建议用包装类(如 Long 而非 long),便于表达 null 含义和空值校验
- 必填参数不得为 null,应在方法入口用 Objects.requireNonNull() 主动拦截
- 可选参数应通过 Builder 模式或 Optional 封装,不靠调用方“凭经验猜”
引用类型传参要守住不可变原则
Java 是值传递,但传的是引用的副本——这点必须全员理解。团队需约定:
- 方法内不得对入参集合做原地修改(如 list.add()),如需变更应返回新集合或显式标注 @Modifies
- 传入的 DTO/VO 对象默认视为只读,若需修改应复制后操作(如 new UserDTO(user))
- 工具类方法(如日期格式化、字符串截断)必须保证无副作用,不依赖也不改变任何外部状态


















