cursor让开发带来高效率的提升,然而在实践中发现用好cursor还需要方法,本文介绍flutter cursor开发遇到的典型场景
一、项目场景:
cursor编程开发是把双刃剑,用好了带来高效率的提升,用不好反而会降低开发效率和质量。cursor 编程让开发从码代码变为提问题,让开发发生了根本性的变化,但其业务内在逻辑一致,问问题看似比码代码简单,但如果我们把问问题的文字当成代码逻辑,相对于代码编程,提问式并非完全熟悉,其业务实现的形式从
需求分析 ==》详细设计 ==》代码编程 ==》 自测 =》实现
变成:
需求分析==》需求问题 =》cursor 编程 =》 cursor自测 =》 再次问 =》 cursor 编程 =》 cursor自测 =》。。实现
甚至图、详细设计都可以省略,直接把需求变成 问题 提问大模型,往往一个需求需要多次询问才能解决,所以符合大模型识别的 问题 是大模型能否准确实现的关键。
那么在flutter 编程有哪些可提效的场景。
二、提效场景:
1、数据模型定义
flutter 开发具有严格的数据模型定义,数据模型编码完全可由cursor实现,当我们使用cursor完成了第一个规范性的数据模型、接口定义,再次使用cursor定义新模型新接口时,需要让模型参考之前的定义方式,实践发现模型经常会把模型定义搞的复杂,多出来很多不必要的代码,提问参考:
参考**定义数据模型、接口方式,实现**接口,其api为*,传参为*,数据模型为*
从效率上讲,如果我们没有使用模型,自己实现,当熟悉代码模型定义后,粘贴复制或借用第三方工具也可以很快实现,并且不容易出错。
模型很容易把指向不明确的简单问题实现变的复杂,并且其对知识的学习、参考,从目前来看不如一个熟悉项目代码的老手实现稳定。
2、mastergo cursor开发
将mastergo 图和 实现要求喂给模型,实现模型开发,假设该需求需要接口实现,提问参考:
参考**定义数据模型、接口方式,实现**接口,其api为*,传参为*,数据模型为*。
实现**功能,其UI为 ** ,实现要求:
1,***
2,***
3,...
实践发现当使用mastergo cursor 标准配置获取整张图url 比直接截图效果要好,但好的不明显,基本上80%情况下效果相似。
上述不论那种方式,其在细节上仍然无法与UI保持100%一致,当我们实现更细致图,可将UI图放大,截一张更大的仅包含该细节实现的图并描述细节需求,从而让模型实现细节。
3、响应式实现
cursor很容易将flutter 响应式实现忘记,从而报错“[Get] the improper use of a GetX has been detected”,导致显示问题,所以当需要响应式设计,需要描述设计需求:
参考**定义数据模型、接口方式,实现**接口,其api为*,传参为*,数据模型为*。
实现**功能,其UI为 ** ,实现要求:
1,***
2,***
3,...
需要响应式实现该需求,避免GetX的错误,注意正确使用Obx位置。
4、焦点问题
flutter 在表单当中,输入框、下拉框等同时存在的情况很容易出现焦点混乱的情况。
使用全局主动焦点管理:为每个输入框创建专门的FocusNode,在显示下拉前失去所有焦点,
使用延迟确保焦点完全失去,正确清理FocusNode资源。
5、cursor 排查问题方法
直接复制运行日志报错信息,把报错的代码位置一并复制。
(.../teacher_homework_publish_view.dart:489:73)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
⛔ Exception while publishing homework: Exception: Incomplete system teaching informat
当排查复杂问题,发现问了几次模型都无法解决时,提问让模型打印错误日志,并最后将日志信息喂给大模型,可快速定位问题。
6、硬编码国际化
进行国际化项目开发时,在封装好国际化组件后,只需要提问,**文件进行硬编码标准国际化处理,cursor可自动翻译多种语言,注意不要提问模糊的 进行多语言翻译,可能会进行冗余处理。
建议提问:去除系统教辅相关print打印,以及进行硬编码标准国际化处理
错误提问:暂无人提交 占位文字,并进行多语言翻译
7、自适应布局
国际化项目对布局要求较高,不同语言字符长度差别较大,因此表单采用整行布局而非固定内容宽度,更适合多语言布局情况,即便如此也不能解决所有问题,对于部分语言过长的问题需要再优化。
调整teacher_homework_view 布局因英语听写选项文本太长,每个选项占满一行,
其中选项label占其中3分之一,右对齐,选项内容占3分之二左对齐,
限制publish type下面选项按钮的最大宽度,和select course最大宽度
8、复杂问题如何提问,在此种场景下,更能体会语言需符合模型识别,更像是用中文问答式编程。
statistics 左侧shuju,butong mokuai xianshi butong作业详情:
作文:is_composition,等级:is_level
1. 提交率:提交人数/作业下发人群总数
2. 平均正确率:
非作文类:平均正确率,每人正确率之和/提交的人数
作文类:平均分,每人分数之和/提交的人数;等级类平均分模块不显示;
3. 最高正确率:已提交人中最高分
非作文类:最高正确率,百分比显示
作文类:最高分,得分或等级显示
4. 最低正确率:已提交人中最低分
非作文类:最低正确率,百分比显示
作文类:最低分,得分或等级显示
9、公共组件指定,当某个需要需要使用公共组件或封装组件实现时,需指定清晰,而非让模型自由发挥。
题目渲染采用analyse_result字段, MixedMathContentWidget组件渲染
10、谨慎使用模型进行文件移动
会删除原来文件并生成新的文件,新文件与之前文件内容可能变化很大!
将homework homework_composition_topic_dialog homework_dictation_dialog
homework_publish student_selection 及homework_view等
内容移动到teacher_pages 下的teacher_home 文件夹下
11、无需对第三库了解,用cursor轻松实现
语速设置是一个滑动组件,只能选择固定的0.5~1.75值,
请考虑是否使用第三方库来解决
请使用第三方库试试看,这个自定义组件并不好用,值无法响应式移动
当使用第一个问题进行提问,模型自己开发了一个组件,当我觉得这个组件不好用,模型推荐使用第三方组件。
12、使用cursor生成测试数据
使用cursor 在开发时使用测试数据,可大大提升开发和自测效率,而你只要一句话。
在未提交下面添加,题目统计 模块,题目统计接口获取作业主题报告 api,
传入参数homework_id、team_id,其数据结构如下
**
,其中左侧为content,使用MixedMathContentWidget 组件渲染,
右侧为数据统计,平均正确率取值correct_rate,答错finish_count - correct_count,答对correct_count,
使用模拟数据,测试mock数据模拟
三、总结:
使用cursor进行编程有利有弊,当描述的不够清晰进行新老项目开发,使用cursor可能会带来新的问题,对新项目使用cursor编程对后面发生的问题,开发人员可能不能清晰的定位问题,因为不太可能对所有代码详细审查,特别是在赶项目的时候。
使用模型编程像是在一张白纸上画画,这张白纸拥有无限可能,我们需要定义整体规则,在白纸上画上整体边框布局,在用笔时,更细致一些,提问的更让模型理解,或许可以更快速在白纸上画出我们想要的结果。