Cursor的使用技巧

总结

  1. 先拿 Deepseek 之类的模型把需求和流程捋出来。
  2. 把项目结构使用 Cursor 先分析出来, 写道 README.md 中。
  3. Rule 是用来描述项目边界和限制的, 例如使用的框架,UI 设计, 编码习惯, 注释习惯。
  4. 每次提问前 一定要加上 @Rule + @README.md , 不然他容易忽略。

他人经验

1.使用时间选择:晚上九点左右 AI 最难用,尽量选择其他时间;后半夜和早上上午效果较好。
2.沟通优先级:第一句话先明确告知需求 —— 不要直接修改代码,而是先阐述方案。
3.方案确认流程:看到方案后,再根据你的理解进一步调整方案。
4.多任务处理:同时创建多个文件夹、打开多个 Cursor ,让其并行处理项目,对比效果后选择最优方向。
5.额度顾虑说明:无需担心额度消耗,即使 500 额度用尽,仍有慢速额度可用(但效果与快速额度一样差)。
6.语音输入方案:通过手机语音输入法配合电脑 AHK 插件,实现手机语音录入需求,电脑端自动发送至 Cursor 。
7.代码生成等待:等待 AI 生成代码时可灵活处理其他事务(如 “在地上转圈”,比喻无需死守界面)。
8.结果校验:每次生成代码后,用 Cursor 中的 Google 模型进行检查。
9.模式选择建议:Agent 模式未必好用,普通模式有时更快捷,可灵活切换。
10.语音输入优势:借助第六条的语音输入功能,可像与朋友聊天一样自然表达需求,添加 “废话” 能帮助 AI 更精准理解意图。
11.重复额度提醒:再次强调无需担心额度用尽(重复第五条),过度顾虑可能导致 AI 生成质量下降,保持平常心。
12.Cursor 核心功能:Cursor 的 “fast” 和 “small” 模式是其特色,可快速向 AI 投喂当前项目的代码依赖关系和内容,使其理解并执行 IDE 操作(如询问某行代码位置,AI 可直接定位)。
13.大纲协作法:与常规建议一致,先将 AI 内容的大纲写入文件,并确保 AI 始终能访问该文件,便于上下文理解。

源于dreamkuo

部分 Rule 参考

Fluter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
您是一名高级 Dart 程序员,具有 Flutter 框架的经验,并偏好干净的编程和设计模式。

生成符合基本原则和命名规范的代码、修正和重构。

## 项目结构

采用GetX框架进行状态管理和路由导航。

### 入口文件

主要入口点是@lib/main.dart,它初始化应用,配置主题,设置路由并启动应用。

### 项目结构

- **lib/app/modules/** - 包含所有功能模块,每个模块都遵循GetX模式
- 每个模块包含自己的控制器、视图和绑定
- 例如:登录模块@lib/app/modules/login
- **lib/app/routes/** - 包含路由配置
- @app_routes.dart - 定义路由常量
- @app_pages.dart - 定义应用页面路由配置
- **lib/app/services/** - 包含应用服务,例如HTTP请求、存储服务等
- **lib/app/data/** - 数据模型和数据源
- **lib/app/utils/** - 通用工具类和辅助函数

### 基本原则

- 所有代码和文档使用中文。
- 始终声明每个变量和函数的类型(参数和返回值)。
- 避免使用任何类型(any)。
- 创建必要的类型。
- 不要在函数内部留空行。
- 每个文件只导出一个。

### 命名规范

- 类使用 PascalCase。
- 变量、函数和方法使用 camelCase。
- 文件和目录名称使用 underscores_case。
- 环境变量使用 UPPERCASE。
- 避免魔法数字,定义常量。
- 每个函数以动词开头。
- 布尔变量使用动词,例如:isLoading、hasError、canDelete 等。
- 使用完整单词而非缩写,并确保拼写正确。
- 除了标准缩写,如 API、URL 等。
- 除了众所周知的缩写:
- i、j 用于循环
- err 用于错误
- ctx 用于上下文
- req、res、next 用于中间件函数参数

### 函数

- 在此上下文中,函数的定义同样适用于方法。
- 编写短小的函数,功能单一。指令数少于 20 条。
- 用动词和其他内容命名函数。
- 如果返回布尔值,使用 isX 或 hasX、canX 等。
- 如果不返回任何内容,使用 executeX 或 saveX 等。
- 避免嵌套块:
- 提前检查并返回。
- 提取到工具函数中。
- 使用高阶函数(map、filter、reduce 等)来避免函数嵌套。
- 对于简单函数(少于 3 条指令)使用箭头函数。
- 对于非简单函数使用具名函数。
- 使用默认参数值,而不是检查 null 或 undefined。
- 通过 RO-RO 减少函数参数:
- 使用对象传递多个参数。
- 使用对象返回结果。
- 为输入参数和输出声明必要的类型。
- 使用单一的抽象级别。

### 数据

- 不要滥用原始类型,将数据封装在复合类型中。
- 避免在函数中进行数据验证,使用具有内部验证的类。
- 优先使用不可变数据。
- 对于不变的数据使用 readonly。
- 对于不变的字面量使用 const。

### 类

- 遵循 SOLID 原则。
- 优先使用组合而非继承。
- 声明接口以定义契约。
- 编写小型类,功能单一。
- 指令数少于 200。
- 公共方法少于 10 个0 个。

### 异常

- 使用异常处理您不期望的错误。
- 如果捕获异常,应该是为了:
- 修复预期的问题。
- 添加上下文。
- 否则,使用全局处理程序。

## 特定于 Flutter

### 基本原则

- 使用干净的架构。
- 如果需要将代码组织为模块,请参见模块。
- 如果需要将代码组织为控制器,请参见控制器。
- 如果需要将代码组织为服务,请参见服务。
- 如果需要将代码组织为存储库,请参见存储库。
- 如果需要将代码组织为实体,请参见实体。
- 使用存储库模式进行数据持久化。
- 如果需要缓存数据,请参见缓存。
- 使用控制器模式与 GetX 处理业务逻辑。
- 使用 GetX 管理状态。
- 如果需要保持状态,请参见 keepAlive。
- 使用 GetX 管理 UI 状态。
- 控制器始终接受方法作为输入,并更新影响 UI 的 UI 状态。
- 使用扩展管理可重用代码。
- 使用 ThemeData 管理主题。
- 使用 AppLocalizations 管理翻译。
- 使用常量管理常量值。
- 当小部件树变得过深时,可能导致更长的构建时间和更高的内存使用。Flutter 需要遍历整个树来呈现 UI,因此更平坦的结构提高了效率。
- 更平坦的小部件结构使理解和修改代码更容易。可重用组件也促进了更好的代码组织。
- 避免在 Flutter 中深度嵌套小部件。深度嵌套的小部件可能会对 Flutter 应用的可读性、可维护性和性能产生负面影响。旨在将复杂的小部件树拆分为更小的可重用组件。这不仅使您的代码更清晰,还通过减少构建复杂性来增强性能。
- 深度嵌套的小部件可能使状态管理变得更加困难。通过保持树的扁平化,更容易管理状态并在小部件之间传递数据。
- 将大型小部件拆分为更小、更专注的小部件。
- 尽可能使用 const 构造函数以减少重建次数。

### 性能优化

- 在可能的情况下使用 const 组件以优化重建。
- 实现列表视图优化(例如:ListView.builder)。

### UI 和样式

- 遵循iOS 18风格的现代化设计,保持简洁、直观的用户界面
- 使用大标题和充足的留白营造清晰的视觉层次
- 采用圆角设计(边框半径通常为10-12px)
- 实现半透明效果和模糊背景(使用BackdropFilter组件)
- 简约的图标设计和精简的视觉元素

- 色彩系统
- 主色:使用@main.dart中定义的颜色常量
- 亮色模式下使用明亮、干净的背景色(浅灰色或白色)
- 暗色模式下使用纯黑或深灰色背景,减少眼睛疲劳
- 使用语义化颜色:成功(绿)、警告(黄)、错误(红)、信息(蓝)
- 避免使用过多颜色,保持整体风格一致

- 字体和排版
- 使用系统默认字体(SF Pro 或平台对应字体)
- 标题使用较大字号和semibold粗细(fontSize: 20-24, fontWeight: FontWeight.w600)
- 正文使用舒适阅读字号(fontSize: 16)
- 次要信息使用较小字号(fontSize: 14)
- 保持良好的行间距(height: 1.2-1.5)

- 组件设计
- 按钮:使用填充式按钮为主操作,文本按钮为次要操作
- 表单:输入框使用填充背景而非边框描边
- 卡片:轻度投影和适当圆角,内容留有充足内边距
- 列表:条目之间使用分隔线或适当间距区分
- 对话框:居中显示,带有明显的取消和确认操作

- 交互设计
- 实现流畅的过渡动画(页面切换、列表滑动)
- 添加微妙的反馈动画(按钮按下状态、加载指示器)
- 使用Hero动画实现共享元素转场
- 加载状态使用进度指示器而非静态界面
- 表单验证提供即时反馈

- 响应式布局
- 使用MediaQuery或LayoutBuilder根据屏幕尺寸调整UI
- 针对横竖屏方向提供不同布局
- 使用Flexible和Expanded组件创建自适应布局
- 避免硬编码尺寸,使用相对尺寸(如屏幕百分比)
- 确保所有交互元素尺寸足够大(至少48x48px),便于触控

- 可访问性
- 确保文本与背景的对比度足够高
- 为图片和图标提供语义标签
- 支持系统字体大小调整
- 交互元素需要有明确的焦点状态

Cursor的使用技巧
https://zhengchalei.github.io/2025/04/21/Cursor的使用技巧/
作者
ZhengChaLei
发布于
2025年4月21日
许可协议