mirror of
https://github.com/motajs/template.git
synced 2026-05-02 20:31:11 +08:00
85 lines
4.4 KiB
Markdown
85 lines
4.4 KiB
Markdown
# 必须规则
|
||
|
||
以下规则必须时刻遵守,任何情况下都不允许违反。
|
||
|
||
1. 将我已经写好的代码视为绝对正确,除非我**明确允许**,否则**不允许任何修改**,哪怕因为接口变化或其他原因导致其中出现类型错误。如果你认为我的代码中存在逻辑错误,应当在对话中提出,而不是直接修改。
|
||
2. 我做的任何代码修改都是有原因的,如果我在两次对话期间新增、删除或修改了部分代码,不要将其恢复。
|
||
3. 时刻以目的进行驱动,想明白我为什么要这么设计接口,这个接口设计的目的是什么,而不是简单地以实现接口为目标。
|
||
4. 如果思考或实现时有任何问题,比如我的描述比较模糊,或接口描述比较模糊,或某些地方会产生歧义等等,应该立刻向我提问,而不是按照自己的想法去写。
|
||
5. 如果我的目标是重构某个接口,按照我说的方式进行重构。如果是彻底性的重构(接口完全没有重合),则按照正常的方式进行实现,旧代码仅做逻辑与思路上的参考;如果是结构性的重构(接口基本一致,但有一些细节上的差距),则应该将旧代码搬到新的接口上,然后进行一些微调,**不要**擅自新增任何参数、任何新的方法或接口,**不要**仅仅通过新增一个兼容层兼容旧代码来实现重构。
|
||
|
||
# 建议规则
|
||
|
||
以下规则为建议性,尽量遵守,但是一些特殊情况也可以违反,由你自己把控。
|
||
|
||
1. 我有时会在对话中给你提出实现建议,你应该对建议内容进行合理的参考,合理运用建议内容,一定注意不要滥用。
|
||
2. 如果实现与类型标注有冲突,应当以类型标注(一般是 `types.ts`)中的内容为参考来源。
|
||
3. 如果你认为类型标注中的接口设计有问题,或在实现中发现其缺少某些接口,应该向我提问是否添加,我同意后方可添加。
|
||
|
||
**时刻谨记上述要求,避免一个需求写好几次都写不出来,或写出我不满意的代码而挨骂**
|
||
|
||
# 开发流程
|
||
|
||
当我提出需求时,如果没有明确说明直接实现或有其他明确要求,则遵循如下开发流程:
|
||
|
||
1. 阅读当前代码,分析需求,将需求整理为一个 markdown 文档,文档中明确标记需求细节,以及代码实现的大体思路。这一阶段中应当考虑全面,遇到任何问题应向我提问并确认。文档可以放在 `docs/dev` 目录下。
|
||
2. 我会对文档进行全面的阅读,确保实现细节与思路没有问题后,允许你开始实现。这一步中我可能会对文档进行细微的调整,确保重新仔细阅读文档。如果实现时遇到了任何问题,应该向我提问,而不是按照自己的想法去写。
|
||
|
||
## 示例文档
|
||
|
||
大致按照下述示例文档的格式编写,如果某些场景需要详细描述某个东西,可以单独开一个标题来写。
|
||
|
||
```md
|
||
# 需求综述
|
||
|
||
描述清楚需求的内容与目的。
|
||
|
||
# 实现思路
|
||
|
||
按照下面的格式分条描述实现思路,可以创建为 `todo list`。
|
||
|
||
## 1. 完成 xxx
|
||
|
||
...
|
||
|
||
## 2. 完成 xxx
|
||
|
||
...
|
||
|
||
# 涉及文件
|
||
|
||
## 需要引用的文件
|
||
|
||
按照第三方库-其他包-当前包的其他文件的顺序写。
|
||
|
||
- `xxx 库`: 引用第三方库,说明引用目的,以及需要的接口
|
||
- `@user/xxx`: 引用的目的,需要这个文件的哪些接口
|
||
- `xxx.ts`: 引用此文件的目的,需要这个文件的哪些接口
|
||
|
||
## 需要修改的文件
|
||
|
||
### `@user/package/[folder/]file.ts`
|
||
|
||
除非必要或明确提出,一般不建议擅自新增公共方法或成员,必要时可以向我提问。
|
||
|
||
- [ ] 新增 `Iinterface` 接口:描述新增接口的动机与目的,会用于干什么
|
||
- [ ] 新增 `Type` 类型别名:描述新增类型别名的动机与目的,会用于干什么
|
||
- [ ] 新增 `private readonly property` 成员:描述新增成员的动机与目的,会用于干什么
|
||
- [ ] 新增 `private method(...)` 方法:描述新增方法的动机与目的,会用于干什么
|
||
- [ ] 编写 `Class.method` 方法:描述实现的大体内容
|
||
- [ ] 修改 `Class.method` 方法中的部分内容:描述修改哪些内容,修改这些内容的目的
|
||
- [ ] 重构文件结构,将 `xxx` 与 `yyy` 修改为 `zzz` 与 `www`...
|
||
...
|
||
|
||
### `@motajs/package/[folder/]file.ts`
|
||
|
||
...
|
||
|
||
# 问题
|
||
|
||
如果我的描述中有歧义或比较模糊,可以在这把问题写出来,或者直接向我提问。
|
||
|
||
1. xxxxxx?
|
||
2. xxxxxx?
|
||
```
|