阿里Java开发手册强制变量命名用snake_case,字段/参数/局部变量禁用camelCase;布尔字段须以is_开头且getter为getIsXxx();禁用下划线开头结尾、拼音、缩写、数字混入;常量、DTO、数据库列名须严格对齐snake_case。

阿里 Java 开发手册对变量命名的限制不是建议,而是强制约束——IDEA 装上 Alibaba Java Coding Guidelines 插件后,违规命名会直接标红,CI 流水线也可能卡住构建。
变量名必须用 snake_case,不能用 camelCase
这是最常被误踩的点:字段/参数/局部变量层统一禁用驼峰。不是“可以不用”,是“不许用”。比如 userToken、maxRetryCount 都违规,必须写成 user_token、max_retry_count。
常见错误现象:
-
private String orderNo;→ 应改为private String order_no; -
private Integer totalAmount;→ 应改为private Integer total_amount; - Lombok 自动生成的
@Data会生成getTotalAmount(),但字段名本身已违规,框架映射(如 MyBatis)仍可能失败
注意:类名、方法名、包名仍用标准 Java 驼峰(UserServiceImpl、saveUser、com.alibaba.xxx),仅字段/变量层切换。
is_ 开头的布尔字段必须配 getIsXxx() getter
手册明确要求布尔字段以 is_ 开头,且 getter 必须是 getIsXxx() 形式,不是 isXxx()。否则 Spring、MyBatis 等框架反射时会把字段名解析为去掉 is_ 的部分(如 is_valid → valid),而实际字段叫 is_valid,导致取不到值。
实操建议:
- 定义字段:
private Boolean is_deleted;(不是deleted,也不是isDeleted) - 手动写 getter:
public Boolean getIsDeleted() { return is_deleted; }(不能写isDeleted()) - 若用 Lombok,必须显式声明:
@Getter public Boolean is_deleted;,否则@Getter默认生成isDeleted(),反而违规
禁止下划线开头/结尾、拼音、缩写、数字混入
这些不是风格问题,是硬性红线。IDEA 插件会直接报错,且容易引发序列化异常(如 Jackson 默认忽略 _status 字段)或数据库映射断裂。
1688 商品价格监控技能。使用 browser-use 或 web-access 自动抓取 1688 商品价格,监控价格变化并生成报告。 适用场景: - 监控 1688 供应商价格变化 - 批量抓取商品当前价格 - 生成价格趋势报告 - 竞品价格分析 核心功能: 1. monitor_price: 监控单个商品价格 2. batch_monitor: 批量监控多个商品 3. generate_report: 生成价格监控报告 4. compare_prices: 对比不同供应商价格
典型陷阱:
-
private String _status;→ 下划线开头,违规;若必须保留,得加@JsonProperty("_status") -
private String usr_name;→ 缩写usr,应为user_name -
private Integer order_2nd_count;→ 数字混入中间,应为order_second_count -
private String shouji;→ 拼音,应为phone_number或mobile_number
所有变量名必须满足:纯英文小写字母 + 下划线,且首尾不能是下划线,不能含数字(除非是完整单词,如 version_2024 可接受,但 v2_count 不行)。
常量、DTO、数据库列名三者必须严格对齐
常量用 UPPER_SNAKE_CASE(如 MAX_RETRY_COUNT),DTO 字段名必须和数据库列名完全一致(都用 snake_case),否则 MyBatis 的 resultMap 或 JPA 的 @Column(name = "user_name") 会失效。
关键细节:
- 数据库建表时列名也得是
user_name,不是userName—— 否则即使 Java 层写对了,映射仍断开 - DTO 中的
user_name字段若在 JSON 序列化时想保持原样,Jackson 默认支持(无需额外注解);但若用了@JsonNaming全局配置,需确认策略兼容snake_case - Spring Boot 配置项(如
app.max-retry-count)是 kebab-case,和 Java 字段名无关,不要混淆
最易被忽略的是:数据库列名、Java DTO 字段名、JSON key、SQL 查询别名这四者,在一次请求链路中必须全部对齐为同一 snake_case 形式,缺一不可。










