深度使用Cursor一周下来,体验如下:
1、小项目能轻松简单完成,出错较少,小项目中可以使用cursor直接创建基本架构,再调整细节,比如前端的uniapp, 原生小程序、VUE这些;
2、复杂项目不太可能通过几次对话就能实现,最好在已有项目或架构下分解逐步实现功能;
3、对效率提高作用很大,不管是创建代码,调试,还是修改,只要目标清楚基本都能完美解决问题;
4、程序员的时间从写代码转向架构设计,需求描述、调试、修改上。最近完成的两个项目除去原有框架的代码后增加的代码98%是由cursor完成的
5、基本功还是要扎实,技术了解要全面,不然没法向AI提出具体的需求,遇到问题也不知道怎么解决。
使用技巧有很多,重中之重就是提问技巧,其他技巧这里就不探讨了。
Cursor AI提问技巧
- 明确具体:尽量提供详细的问题描述,明确你想要解决的问题或想要实现的功能。
- 使用正确的术语:使用准确的技术术语和关键词,这有助于Cursor AI理解你的需求。
- 上下文信息:提供足够的上下文信息,比如你正在使用的编程语言、框架、库等。
- 示例代码:如果可能,提供一小段示例代码,这样Cursor AI可以更好地理解你的问题和需求。
- 明确期望的结果:描述你期望得到的结果,包括输出格式、性能要求等。
- 避免歧义:尽量避免使用模糊不清的表述,这可能导致Cursor AI理解错误。
- 逐步提问:如果你的问题很复杂,尝试将其分解成几个小问题,逐步提问。
- 反馈和迭代:如果Cursor AI的回答不完全符合你的预期,提供反馈并尝试重新表述问题。
- 利用上下文:如果你之前提过相关的问题,可以在新的问题中提及,这样可以帮助Cursor AI更好地理解问题的连续性。
- 直接提问:如果你想要的是一个直接的答案或解决方案,就直接提问,比如“如何修复这个bug?”或“这个函数的参数是什么?”
- 避免过于宽泛的问题:尽量避免提出过于宽泛的问题,因为这可能导致答案过于笼统。
- 利用命令:如果Cursor AI支持特定的命令或快捷方式,使用它们可以更高效地获取信息。
- 明确限制条件:如果你的问题有特定的限制条件,比如时间、资源或技术限制,确保在提问时提及。
- 清晰的问题结构:组织好你的问题,使用清晰的结构,比如问题背景、具体问题、期望结果。
- 利用示例:如果可能,提供一个具体的例子或场景,这样可以帮助Cursor AI更好地理解问题。
- 保持耐心:有时候,即使问题表述得很清楚,也可能需要一些时间来获得满意的答案,保持耐心。
示例
提问中指明要操作的对象,比如某个文件名,组件名,类名,功能名;要实现的功能描述,功能的举例描述,效果描述
实现效果
前端项目中,要明确向cursor指出哪些数据是由后端提供的,并让他写出接口并按你要去的字段模拟数据,用于测试。
效果
连数据验证都一起做好了,还贴心的给了注释,代码:
// 验证是否可以插入运算符canInsertOperator(formula, operator){if(!formula)returnfalse// 空公式不能插入运算符const lastChar = formula.trim().slice(-1)// 特殊处理左括号if(operator ==='('){// 左括号前面必须是运算符或公式开始return['+','-','*','/','(',''].includes(lastChar)}// 特殊处理右括号if(operator ===')'){// 右括号前面必须是数字、字段结束符}或另一个右括号return['}',')',...this.numbers].includes(lastChar)}// 其他运算符前面必须是数字、字段结束符}或右括号return['}',')',...this.numbers].includes(lastChar)},// 验证是否可以插入数字canInsertNumber(formula){if(!formula)returntrue// 空公式可以插入数字const lastChar = formula.trim().slice(-1)// 如果最后是右括号或字段结束符},则不能插入数字return!['}',')'].includes(lastChar)},// 获取运算符错误提示getOperatorError(operator){switch(operator){case'(':return'左括号前必须是运算符或公式开始'case')':return'右括号前必须是数字、字段或右括号'default:return'运算符前必须是数字、字段或右括号'}},// 检查括号匹配checkBrackets(formula){let stack =[]for(let char of formula){if(char ==='('){
stack.push(char)}elseif(char ===')'){if(stack.length ===0)returnfalse
stack.pop()}}return stack.length ===0},// 检查公式是否完整isIncompleteFormula(formula){// 以运算符结尾if(/[+\-*/]$/.test(formula))returntrue// 以左括号结尾if(formula.endsWith('('))returntruereturnfalse},// 添加检查数字使用是否合法的方法hasInvalidNumberUsage(formula){// 检查是否有连续的数字和字段const hasNumberFieldSequence =/\d{[^}]+}/.test(formula)// 检查是否有字段后直接跟数字const hasFieldNumberSequence =/}[0-9]/.test(formula)return hasNumberFieldSequence || hasFieldNumberSequence
},// 获取最后输入的类型getLastInputType(formula){if(!formula)return''if(formula.endsWith('}'))return'field'if(/[+\-*/()]/.test(formula.slice(-1)))return'operator'if(/\d/.test(formula.slice(-1)))return'number'return''},
AI就像女朋友,你越是懂她,你就过得越滋润。。。
版权归原作者 feikul 所有, 如有侵权,请联系我们删除。