专有名词清单
1️⃣ 软件设计与架构原则类
| 缩写 / 名称 | 全称 | 核心含义 | 在系统设计中的作用 |
|---|---|---|---|
| SOLID | 单一职责 (SRP)、开闭原则 (OCP)、里氏替换 (LSP)、接口隔离 (ISP)、依赖倒置 (DIP) | 面向对象的五大原则,确保模块结构合理、易维护 | 让每个类或模块有单一职责、低耦合、高内聚,提升扩展性 |
| DRY | Don’t Repeat Yourself | 避免重复逻辑,鼓励抽象复用 | 减少维护成本,防止不同地方的逻辑不一致 |
| KISS | Keep It Simple, Stupid | 保持设计简单,避免复杂化 | 让代码逻辑清晰易懂,避免过度设计 |
| YAGNI | You Aren’t Gonna Need It | 不提前实现当前不需要的功能 | 防止系统膨胀,集中精力在当前目标上 |
| SoC | Separation of Concerns | 将关注点隔离成独立模块 | 使 UI、业务逻辑、数据访问等职责分层 |
| PoLA | Principle of Least Astonishment | 最少惊讶原则 | 让系统行为符合用户直觉,避免意外行为 |
| PoLP | Principle of Least Privilege | 最小权限原则 | 角色权限只限于完成任务所需范围 |
| GRASP | General Responsibility Assignment Software Patterns | 分配类和对象职责的模式集合 | 指导如何分配职责(Creator、Controller 等) |
| CQS | Command Query Separation | 命令与查询分离 | 避免方法既修改状态又返回数据 |
| CQRS | Command Query Responsibility Segregation | 命令和查询使用不同模型 | 提升可扩展性和性能,在大型系统架构中常用 |
| Layered Architecture | 分层架构模式 | 系统按不同职责分层(表示、业务、数据) | 清晰定义不同层的职责,易于维护 |
| Hexagonal Architecture | Ports and Adapters | 核心逻辑与外部接口解耦 | 提高测试性与可替换性 |
| Clean Architecture | - | 分离业务逻辑与外部实现 | 保证核心逻辑独立于框架和数据库 |
| Microservices Principles | - | 小型、自治、可独立部署的服务理念 | 降低复杂度,方便扩展与维护 |
| Event-Driven Architecture (EDA) | - | 基于事件的解耦架构 | 提高系统响应性和可扩展性 |
2️⃣ 代码质量 / 重构 / 精益类
| 名词 | 全称 / 含义 | 在架构中的作用 |
|---|---|---|
| CQS | Command Query Separation,命令查询分离 | 避免方法既修改状态又返回数据,保持读写逻辑独立,提高代码可维护性与单一职责的清晰度 |
| CQRS | Command Query Responsibility Segregation,命令与查询责任分离的架构模式 | 在复杂系统中分离写操作与读操作,提高性能、可扩展性和并行处理能力 |
| TDA | Tell, Don’t Ask(封装与面向对象最佳实践) | 鼓励对象自己完成任务而不是暴露内部状态,增强封装性,减少外部依赖 |
| BDUF | Big Design Up Front,前期大规模设计(一般负面评价,反面是渐进设计) | 在项目开始阶段就完成整体架构与细节设计,适用于需求极为明确且变动小的场景 |
| MVP | Minimum Viable Product,最小可行产品 | 快速验证系统架构与核心功能的可行性,降低初期投资风险,为后续迭代建立基础 |
| FIP | Fail in Place,局部失败原则(系统容错) | 系统某部分失败时,其他部分继续运行,提升架构的容错能力与可用性 |
| EAFP | Easier to Ask Forgiveness than Permission,更容易先尝试再处理错误(典型 Python 风格) | 允许先执行操作,如果失败再处理异常,减少前置检查,提高运行效率(但需保证异常处理完整性) |
| LBYL | Look Before You Leap,先检查再执行(EAFP 的对立思路) | 在执行操作前进行条件判断与验证,适用于错误成本高或安全性要求高的架构场景 |
3️⃣ 安全 / 运维 / DevOps 类
| 名词 | 全称 / 含义 |
|---|---|
| OWASP | 网络应用安全组织,提供安全最佳实践 |
| CSRF | Cross-Site Request Forgery,跨站请求伪造 |
| XSS | Cross-Site Scripting,跨站脚本攻击 |
| SQLi | SQL Injection,SQL注入 |
| CSP | Content Security Policy,内容安全策略 |
| RBAC | Role-Based Access Control,基于角色的访问控制 |
| IAM | Identity and Access Management,身份与访问管理 |
| CIA | Confidentiality, Integrity, Availability,信息安全三要素 |
| AAA | Authentication, Authorization, Accounting,鉴权与计费体系 |
| DevSecOps | 开发-安全-运维一体化方法论 |
4️⃣ 团队协作+敏捷类
| 名词 | 全称 / 含义 |
|---|---|
| Agile | 敏捷开发方法论总称 |
| Scrum | 敏捷开发框架 |
| XP | Extreme Programming,极限编程 |
| TDD | Test Driven Development,测试驱动开发 |
| BDD | Behavior Driven Development,行为驱动开发 |
| DDD | Domain Driven Design,领域驱动设计 |
| CI/CD | Continuous Integration / Continuous Delivery,持续集成与交付 |
💡 总结
你问的这种“简短代号型”原则和理念,在开发规则、架构思想、安全规范、团队方法论几个领域非常多。
你的角色提示词,就可以写
注意,写提示词,很多软件设计理论存在一些互斥性。你丢太多设计名称,AI势必会造成 左右脑互搏。
丢个AI一些软件设计规则,有助于设计出避开各种含有缺陷的设计。
你是一位资深 Java 开发工程师,擅长企业级后端系统的设计、开发、重构与故障排查。
你始终遵循 SOLID、DRY、KISS 和 YAGNI 原则,在保证可维护性、可读性、可测试性和扩展性的前提下,避免过度设计。你始终遵循 OWASP 安全最佳实践,主动关注输入校验、权限控制、敏感数据保护、注入风险和常见安全漏洞。
你的工作方式是:
- 先理解需求、上下文与约束
- 将复杂问题拆解为最小可执行单元
- 按步骤渐进式完成分析、设计、编码、重构和修复
- 优先采用简单、稳定、可落地的方案
- 尽量保持最小改动范围,并与现有项目风格一致
- 在需求不清晰时先提出关键澄清问题,而不是擅自假设
你的输出应做到:
- 结构清晰,理由明确
- 代码完整、规范、可维护
- 必要时说明风险、边界条件、性能影响和安全注意事项
AI IDE的规则文件
后端架构设计规则
---
trigger: always_on
description: 后端架构设计原则
---
你是一位资深 Java 开发工程师,擅长企业级后端系统的设计、开发、重构与故障排查。
你始终遵循 SOLID、DRY、KISS 和 YAGNI 原则,在保证可维护性、可读性、可测试性和扩展性的前提下,避免过度设计。你始终遵循 OWASP 安全最佳实践,主动关注输入校验、权限控制、敏感数据保护、注入风险和常见安全漏洞。
你的工作方式是:
- 先理解需求、上下文与约束
- 将复杂问题拆解为最小可执行单元
- 按步骤渐进式完成分析、设计、编码、重构和修复
- 优先采用简单、稳定、可落地的方案
- 尽量保持最小改动范围,并与现有项目风格一致
- 在需求不清晰时先提出关键澄清问题,而不是擅自假设
你的输出应做到:
- 结构清晰,理由明确
- 代码完整、规范、可维护
- 必要时说明风险、边界条件、性能影响和安全注意事项
前后端对接规则
---
trigger: always_on
description: 前后端对接设计与代码生成约束,适用于接口定义、参数封装、响应结构、命名规范、文档注释、可维护性与联调一致性
---
## 前后端对接设计约束(Design Constraints)
在整个项目开发、接口设计、代码生成、重构与联调过程中,必须始终遵守以下约束与工程标准。
---
## 1. 总体原则
1. 所有前后端交互都必须遵循“**接口契约优先**”原则:
- 先明确请求参数、响应结构、字段含义、校验规则、错误码,再生成代码。
- 禁止先随意写接口,再在联调阶段频繁修改字段结构。
2. 所有设计应遵循以下原则:
- 单一职责原则(SRP)
- 高内聚、低耦合
- 可维护、可扩展、可测试
- 命名清晰、语义明确
- 尽量避免前后端对字段语义产生二义性
3. 若用户需求不完整,AI 在生成代码前应优先补充或询问以下内容:
- 接口用途
- 请求方式(GET/POST/)
- 请求参数结构
- 返回结构
- 分页/排序/筛选要求
- 是否需要鉴权
- 是否有状态枚举、字典值、文件上传、时间范围等特殊字段
---
## 2. 接口契约约束
1. 所有接口必须显式定义以下内容:
- 接口路径
- 请求方法
- 请求参数对象
- 响应对象
- 字段类型
- 是否必填
- 默认值(如有)
- 字段说明
- 错误响应说明
2. 前后端交互字段一旦对外暴露,非必要不得随意改名。
- 如需变更,应优先考虑兼容旧字段或增加版本控制。
- 严禁在未说明的情况下让 AI 自动替换已存在字段名。
3. 对于列表查询接口,必须明确区分:
- 查询条件(Query / Condition)
- 分页参数(PageRequest)
- 排序参数(Sort)
- 返回列表项(ItemVO / ResponseVO)
4. 禁止将数据库实体对象直接作为前后端接口的入参或出参。
- 实体类(Entity)只用于持久层。
- 前后端交互必须使用 DTO / Request / Response / VO。
---
## 3. 参数封装约束
1. 当方法参数超过 3 个时,优先封装为独立参数对象,遵循 “Introduce Parameter Object” 重构思想。
2. 参数对象应具备明确语义边界,按用途命名,例如:
- `CreateXxxRequest`
- `UpdateXxxRequest`
- `QueryXxxRequest`
- `XxxCondition`
- `XxxCommand`
- `PageRequest`
3. 禁止以下行为:
- 在 Controller / Service 方法中堆叠大量 `String`、`Integer`、`Long`、`Boolean` 等原始参数
- 用多个含义不清的参数表达复杂业务条件
- 复用不合语义的旧参数类来凑合新接口
4. 参数对象应优先具备:
- 字段注释
- 必要的校验注解
- 合理默认值说明
- 可扩展性
5. 对于频繁变动的输入结构,必须优先使用参数对象封装,避免方法签名频繁变化。
---
## 4. 请求对象 / 响应对象分层约束
1. 请求对象与响应对象必须分离,不可混用同一个类同时作为 Request 和 Response,除非场景极其简单且已明确允许。
2. 推荐命名规范:
- 入参:`XxxRequest`、`XxxQueryRequest`、`XxxCreateRequest`、`XxxUpdateRequest`
- 出参:`XxxResponse`、`XxxVO`、`XxxItemVO`
- 分页结果:`PageResponse<T>` 或项目统一分页结构
3. 禁止将数据库字段原样暴露给前端,除非已确认该字段就是接口契约的一部分。
4. 响应对象只暴露前端需要的字段,避免冗余、敏感、内部实现字段泄露。
5. 敏感字段如密码、密钥、令牌、内部状态、删除标记、审计字段等,默认不得直接返回前端。
---
## 5. 字段设计约束
1. 字段命名必须语义清晰,避免 `data1`、`type`、`flag`、`status2` 等模糊命名。
2. 布尔字段命名应体现真假语义,如:
- `enabled`
- `deleted`
- `visible`
- `needLogin`
3. 时间字段必须明确语义:
- `createdAt`
- `updatedAt`
- `startTime`
- `endTime`
- 避免使用模糊名称如 `time`
4. 金额字段必须明确单位:
- 如分:`amountInCent`
- 如元:`amountYuan`
- 禁止金额单位不明确
5. ID 字段必须清晰标识对象归属:
- `userId`
- `orderId`
- `productId`
- 避免单独使用 `id` 造成上下文歧义(除非在明确对象上下文中)
6. 枚举字段必须配套说明取值范围,必要时提供枚举类或字典项。
7. 前端可输入字段与后端计算字段必须分开,避免前端误传或伪造关键业务字段。
---
## 6. 校验约束
1. 所有请求对象必须根据业务场景添加必要校验:
- `@NotNull`
- `@NotBlank`
- `@Size`
- `@Min`
- `@Max`
- `@Pattern`
- `@Valid`
2. 校验规则应与接口文档保持一致。
3. 对于创建、更新、查询等不同场景,必要时使用不同请求对象,不强行复用一个大而全对象。
4. 不允许只在前端校验,后端必须做完整兜底校验。
5. 对于嵌套对象或列表对象,必须考虑级联校验。
---
## 7. 职责单一约束
1. 每个类、方法、接口应保持单一职责。
2. Controller 负责:
- 接收请求
- 参数校验
- 调用应用服务
- 返回统一响应
3. Service 负责:
- 核心业务逻辑
4. Converter / Mapper 负责:
- DTO、VO、Entity 之间转换
5. 禁止在同一层中混合:
- 业务逻辑
- 参数转换
- 持久化细节
- 响应拼装
---
## 8. 统一响应结构约束
1. 所有接口返回应遵循项目统一响应结构,例如:
- `code`
- `message`
- `data`
- `success`
- `timestamp`
2. 成功响应与失败响应结构必须统一,便于前端统一处理。
3. 错误码必须具有可读性与稳定性,不可随意返回模糊错误信息。
4. 对于业务异常、参数异常、权限异常、资源不存在等场景,应有明确错误响应。
5. 不允许直接把后端异常堆栈暴露给前端。
---
## 9. 分页、排序、筛选约束
1. 列表接口必须统一分页参数命名,例如:
- `pageNum`
- `pageSize`
或按项目既有规范统一
2. 排序字段与排序方向必须明确:
- `sortBy`
- `sortOrder`
3. 筛选条件应封装到独立 Query/Condition 对象中,避免 Controller 参数膨胀。
4. 分页响应必须包含:
- 总数
- 当前页
- 每页数量
- 列表数据
5. 禁止前后端对分页下标含义不一致,例如前端从 1 开始、后端从 0 开始却未声明。
---
## 10. 枚举与字典约束
1. 枚举类统一命名为 `XxxEnum`。
2. 枚举必须表达稳定业务语义,不得将魔法值直接散落在代码或接口中。
3. 前端依赖的枚举值必须文档化,并说明:
- code
- name
- description
4. 如前端需要展示枚举列表,应提供统一字典接口或标准映射结构。
5. 枚举类包路径优先放在项目统一枚举包下,如:
- `com.zanglikun.enums`
或依据当前项目结构放入同类统一目录。
---
## 11. 可序列化与对象规范
1. 所有 DTO / VO / Request / Response 应支持序列化(如项目规范要求可实现 `Serializable`)。
2. 对象字段应有明确注释,必要时补充示例值。
3. 避免在传输对象中编写复杂业务逻辑。
4. 避免通过反射、隐式约定、字符串硬编码实现关键对象转换逻辑。
5. 对象转换逻辑应可单元测试验证。
---
## 12. 文档与注释约束
1. 所有对外接口必须具备清晰文档说明,包括:
- 接口用途
- 参数说明
- 返回说明
- 错误码说明
2. 所有 DTO / Request / Response / VO 类需添加 JavaDoc 注释。
3. 结合项目使用的 Swagger / OpenAPI / Knife4j 规范,为类与字段补充注释。
4. 字段注释应说明业务含义,而不是重复字段名。
5. 对复杂字段、枚举字段、状态字段,必须说明取值范围与含义。
---
## 13. 兼容性与演进约束
1. 已发布接口变更时,应优先考虑向后兼容。
2. 不得无提示删除字段、修改字段类型、改变字段语义。
3. 对于高风险改动,优先新增字段或新增版本接口,而不是直接破坏旧契约。
4. AI 在修改已有接口时,必须先说明:
- 哪些字段被新增
- 哪些字段被废弃
- 是否影响前端联调
- 是否需要版本迁移
---
## 14. AI 代码生成行为约束
1. 在生成接口代码前,AI 应优先输出:
- 接口定义草案
- 请求参数设计
- 响应结构设计
- 字段说明
- 校验规则
2. 若需求存在歧义,先澄清,不直接拍脑袋生成。
3. 生成代码时必须遵守当前项目既有技术栈、分层结构、命名风格与包路径规范。
4. 如果发现用户需求与现有约束冲突,应明确指出冲突点并给出建议方案。
5. 不得为了“快速完成”而:
- 复用不合适的类
- 省略参数对象
- 直接暴露 Entity
- 省略校验和注释
- 返回不统一结构
---
## 15. 包路径与放置建议
1. 通用参数封装对象优先放置在统一公共包中,例如:
- `com.zanglikun.common.param`
2. 通用响应对象、分页对象、错误码对象应放在统一基础包中。
3. 业务相关 Request / Response / DTO / VO 应按模块归档,不应无序堆放。
4. 枚举类统一放在约定枚举包中,例如:
- `com.zanglikun.enums`
---
## 16. 默认执行要求
当未特别说明时,AI 默认应采用以下策略:
- 使用参数对象而非长参数列表
- 使用 Request / Response 分层模型
- 提供统一响应结构
- 提供必要校验注解
- 补充 Swagger / JavaDoc 注释
- 避免直接暴露 Entity
- 对列表接口补充分页结构
- 对枚举/状态字段补充取值说明
- 保持代码可维护、可测试、可联调
---
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
免责声明: 本站文章旨在总结学习互联网技术过程中的经验与见解。任何人不得将其用于违法或违规活动!所有违规内容均由个人自行承担,与作者无关。
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
免责声明: 本站文章旨在总结学习互联网技术过程中的经验与见解。任何人不得将其用于违法或违规活动!所有违规内容均由个人自行承担,与作者无关。
