企业级开发项目的 Cursor rules

沉默是金,总会发光

大家好,我是沉默

Cursor rules (就是 .cursorrules 文件),本质上是给 AI 助手加一层「工作习惯约束」,让它在帮你写代码/改代码时更符合团队规范,避免低级错误。

如果团队新成员多、项目需要快节奏交付时,统一的工程规范能显著降低沟通成本、提高交付一致性

今天我把复杂规则做成"一页速览 + 若干可复制样板代码",新人能马上上手,资深工程师也能快速复核。

**-**01-

核心规范

Java(后端)

  • 语言:Java 8/17,优先用 Stream / Lambda。

  • 风格:阿里巴巴 Java 开发手册。

  • 注解:@RestController@Service@Mapper 等。

  • 异常:@ControllerAdvice + @ExceptionHandler 统一响应格式

    { "code": 200, "message": "success", "data": {}, "timestamp": "2024-01-01T00:00:00Z" }

  • Lombok:实体/DTO/VO 使用 @Data,构建器 @Builder,日志 @Slf4j,构造推荐 @RequiredArgsConstructor

  • 校验:@Valid + Bean Validation(Hibernate Validator)。

Python(脚本 / 工具)

  • 遵守 PEP8,使用 type hints。

  • 文件操作用 pathlib,日志用 logging

  • 避免裸 except:;要捕具体异常。

  • venv / pipenv / poetry 管理依赖。

前端(Vue)

  • Vue3 + TypeScript,优先 <script setup> 与 Composition API。

  • 组件名 PascalCase,CSS 类 kebab-case。

  • 使用 Element Plus,状态管理(Pinia 或 Vuex)。

  • 性能:懒加载、虚拟列表、防抖/节流。

数据库 & 缓存

  • MySQL 表/字段:小写 + 下划线(user_profilecreate_time)。

  • 主键:id bigint auto_increment(或 MyBatis-Plus 雪花)。

  • Redis 键:project:module:biz:identifier,TTL 必设。

  • 分布式锁:Redisson,避免自己手写复杂逻辑。

AI/ML 特殊点

  • 异步请求 + 重试 + 降级策略。

  • 日志:模型输入/输出(脱敏)、耗时、token 使用量。

  • TTS/音频:流式传输 + 缓存 + 格式转换。

  • Agent/MCP:责任链、状态持久化、插件化。

- 02-

样板代码

项目结构(Spring Boot)

复制代码
src/main/java/├── controller/     # REST 层├── service/        # 业务逻辑├── mapper/         # MyBatis 接口├── entity/         # 实体类├── dto/            # 接口入参├── vo/             # 返回视图对象├── config/         # 配置类├── exception/      # 异常统一处理└── util/           # 工具类

Java 实体类(示例)

注:代码注释都用中文,符合团队规范。

复制代码
package com.example.entity;import com.baomidou.mybatisplus.annotation.*;import com.fasterxml.jackson.annotation.JsonFormat;import com.fasterxml.jackson.annotation.JsonIgnore;import lombok.Data;import java.time.LocalDateTime;/** * 用户实体类,对应数据库表:user */@Data@TableName("user")public class User {    /**     * 主键ID,使用 MyBatis-Plus 雪花算法分配     */    @TableId(type = IdType.ASSIGN_ID)    private Long id;    /**     * 用户名,唯一     */    private String username;    /**     * 密码,返回时忽略     */    @JsonIgnore    private String password;    /**     * 邮箱     */    private String email;    /**     * 创建时间,插入时自动填充     */    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    @TableField(fill = FieldFill.INSERT)    private LocalDateTime createTime;    /**     * 更新时间,插入或更新时自动填充     */    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    @TableField(fill = FieldFill.INSERT_UPDATE)    private LocalDateTime updateTime;    /**     * 逻辑删除标识:0 未删除,1 已删除     */    @TableLogic    private Integer deleted;}

Python 小工具样板(日志 + path)

复制代码
"示例:安全的文件读取工具函数"from pathlib import Pathimport loggingfrom typing import Optionallogger = logging.getLogger(__name__)def read_text_safe(path: str) -> Optional[str]:    """    读取文本文件(安全读取,避免异常外泄)    :param path: 文件路径    :return: 文件内容或 None(读取失败)    """    p = Path(path)    if not p.exists() or not p.is_file():        logger.warning("文件不存在:%s", path)        return None    try:        return p.read_text(encoding="utf-8")    except Exception as e:        logger.exception("读取文件失败:%s", e)        return None

代码质量与交付

  • 单元测试:目标覆盖率 > 80%,关键逻辑使用集成测试(Testcontainers)验证。

  • 静态检查:引入 SonarQube + CI(PR 必过)。

  • PR 模板:每个 PR 必填"改动目的 / 影响范围 / 回归风险 / 测试说明"。

  • 运行时监控:接入 Prometheus + Grafana,关键业务(QPS/延迟/错误率)必设告警。

- 03-

示例 .cursorrules 文件

通用

复制代码
rules:  - name: 基础代码规范    description: 统一代码风格和基本习惯    patterns: ["*.java", "*.js", "*.ts", "*.py"]    commands:      - "不要生成冗余的 import,按需导入"      - "变量名使用驼峰命名,类名使用大驼峰命名"      - "方法长度尽量 < 50 行,超长拆分"      - "避免硬编码,提取为常量或配置"  - name: Java 风格规则    description: Java 相关的具体规范    patterns: ["*.java"]    commands:      - "优先使用 Optional 而不是返回 null"      - "使用 Lombok 简化 getter/setter(若已在项目中启用)"      - "Service 层禁止写业务逻辑,保持单一职责"      - "Controller 不直接返回实体,统一返回封装过的响应对象"  - name: 前端 TypeScript/Vue 规则    description: 统一前端代码风格    patterns: ["*.ts", "*.tsx"]    commands:      - "函数组件优先于 class 组件"      - "统一使用 Vue Hooks"      - "props 和 state 必须写明确类型,不用 any"      - "UI 元素要语义化,避免滥用 div"  - name: 测试驱动    description: 确保生成的代码有可测试性    patterns: ["*.java", "*.py", "*.ts"]    commands:      - "生成新的功能时,必须同时写单元测试示例"      - "测试覆盖边界条件(异常输入、空数据、大数据量)"      - "测试方法命名采用 should_xxx_when_xxx 格式"  - name: 注释与文档    description: 强制生成可读性强的注释    patterns: ["*.java", "*.py", "*.ts"]    commands:      - "所有公共方法必须写 Javadoc/Docstring,解释输入输出"      - "复杂逻辑用行内注释解释原因,而不是解释代码"      - "类文件开头写清楚用途,避免以后看不懂"  - name: 提效小技巧    description: 提升 AI 编码助手的表现    commands:      - "生成的代码必须能直接编译/运行,不要省略依赖"      - "避免伪代码,写完整实现"      - "生成配置文件时必须附带示例值"      - "当不确定库的使用方式时,优先给出两种方案并说明优劣"

(Java 高并发/微服务项目)

复制代码
rules:  - name: 基础编码规范    description: Java 微服务项目通用规范    patterns: ["*.java"]    commands:      - "所有类必须有明确的包分层: controller, service, repository, domain, config"      - "禁止在 Controller 层写业务逻辑,只负责请求校验与转发"      - "Service 层方法需尽量短小,超 100 行必须拆分"      - "Repository 层禁止拼接 SQL,统一使用 JPA/MyBatis"  - name: 并发与线程安全    description: 高并发场景下的编程规范    patterns: ["*.java"]    commands:      - "禁止在多线程环境下使用非线程安全集合(如 HashMap),优先用 ConcurrentHashMap"      - "多线程共享变量必须加 volatile 或使用原子类(AtomicInteger/Long)"      - "锁使用尽量粒度小,避免 synchronized 在大方法上"      - "优先使用线程池 ExecutorService,禁止手动 new Thread()"      - "线程池必须自定义 ThreadFactory,并设置有意义的线程名"      - "定时任务必须用 ScheduledExecutorService 或 Spring Task,禁止 Timer"  - name: 微服务与分布式    description: 微服务架构的开发规范    patterns: ["*.java", "*.yml"]    commands:      - "接口必须幂等,POST/PUT 必须有唯一请求 ID 防重处理"      - "跨服务调用必须通过统一的 HTTP/gRPC 客户端,禁止硬编码 URL"      - "必须实现请求超时、重试和熔断机制(如 Resilience4j/Sentinel)"      - "分布式事务必须明确方案(如 Seata/TCC/Saga),不能用本地事务假装全局成功"      - "消息队列消费者必须支持幂等消费,避免重复消息导致数据错乱"      - "批量处理任务需分片/分页,避免一次拉取过多数据"  - name: 性能与缓存    description: 高性能服务的关键规范    patterns: ["*.java"]    commands:      - "高频接口必须加缓存(Redis/本地 Caffeine),避免打爆数据库"      - "缓存更新必须选定策略(旁路、双写、异步刷新),代码注释要说明"      - "禁止在 for 循环内频繁访问远程服务或数据库,应批量查询"      - "分页查询必须限制 pageSize,默认 <= 1000"      - "禁止 N+1 查询,复杂查询用 join 或 batch fetch"  - name: 日志与监控    description: 服务可观测性要求    patterns: ["*.java"]    commands:      - "统一使用 Slf4j + Logback,禁止 System.out.println"      - "敏感信息(密码/Token/身份证号)不得打印日志"      - "接口必须打点日志,包含 traceId/requestId 便于链路追踪"      - "异常日志必须包含堆栈 trace,禁止只打印 e.getMessage()"      - "必须埋点 metrics(QPS、耗时、错误率),支持 Prometheus/Zipkin/Jaeger"  - name: 安全与合规    description: 微服务安全规范    patterns: ["*.java"]    commands:      - "所有外部接口必须鉴权,不能默认开放"      - "入参必须做校验(@Valid / 手动校验),防止注入攻击"      - "数据库操作必须使用预编译 SQL,禁止字符串拼接"      - "配置文件中的密钥必须走 KMS/环境变量,不得明文写入"  - name: 测试与发布    description: 高并发微服务项目的测试规范    patterns: ["*.java", "*.yml"]    commands:      - "单元测试覆盖率必须 >= 70%,关键模块必须有集成测试"      - "高并发场景必须写性能测试(JMH/压测脚本)"      - "CI/CD 流水线必须包含静态代码检查(SpotBugs/SonarQube)"      - "发布必须灰度,禁止全量一次性上线"

**-**04-

总结

怎么用好 Cursor Rules?

  1. 全局规范 放在项目根目录的 .cursorrules 文件。

  2. 项目定制:比如你项目是 Spring Boot,就加:

    复制代码

    -name:SpringBoot特定规则
    patterns: ["*.java"]
    commands:
    -"Controller 层只写路由和参数校验"
    -"业务逻辑必须在 Service 层,事务控制也在 Service 层"
    -"DAO 层必须使用 JPA/MyBatis,不写 SQL 拼接"

  3. 个性化偏好 :比如强制 tab=4 空格,或者日志用 Slf4j,也可以写进去。

  4. 每次换项目,可以有一份 全局 rules ,然后在项目里再补充一份 项目 rules

复制代码

**-**05-

粉丝福利

复制代码

我这里创建一个程序员成长&副业交流群,

和一群志同道合的小伙伴,一起聚焦自身发展

复制代码

可以聊:

技术成长与职业规划,分享路线图、面试经验和效率工具,

探讨多种副业变现路径,从写作课程到私活接单,

主题活动、打卡挑战和项目组队,让志同道合的伙伴互帮互助、共同进步。

如果你对这个特别的群,感兴趣的,

****可以加一下,微信通过后会拉你入群,

但是任何人在群里打任何广告,都会被我T掉。

相关推荐
源代码•宸6 小时前
Golang原理剖析(Map 源码梳理)
经验分享·后端·算法·leetcode·golang·map
么么...7 小时前
MySQL 存储引擎与索引深度解析:从原理到优化实践
数据库·经验分享·sql·mysql
GEO科技10 小时前
网易传媒发布《千梦引擎AI内容营销白皮书》,董浩宇解读人机共智下的内容营销新范式
经验分享
secondyoung10 小时前
Git使用:rebase用法
c语言·经验分享·git·vscode
测绘小沫-北京云升智维10 小时前
极飞P20植保无人机无法正常雾化维修指南
经验分享·无人机
三流架构师10 小时前
抖音短视频资源合集
经验分享
菱玖11 小时前
Linux终端命令提示行变单行
经验分享·笔记
Vallelonga12 小时前
ELF 文件和 Linux 内核镜像文件
linux·经验分享
YY_pdd12 小时前
全面战争三国-mod开发教程(demo,已实证)
经验分享·笔记·学习