收益:
- 能够区分人工智能在移动开发中提供真正速度的位置(模式代码、草稿、学习)以及将决定留给人类的位置(架构、许可、安全、发布),具体取决于任务风险级别。
- 能够应用一门学科,通过编译、运行、测试和审查步骤来验证每个人工智能输出
- 能够养成编写强有力的、充满上下文的提示的习惯,并保护个人数据和密钥,而不将其提供给人工智能
移动应用程序开发是世界上竞争最激烈的软件领域之一。我们谈论的是一种在数十亿台设备上运行的产品,其更新周期取决于商店的批准,并且始终在用户的口袋里进行衡量。人工智能(AI——可以像人类一样生成文本、代码和解决方案的软件系统)以两种方式进入这一领域:首先,作为加速开发过程的辅助工具(代码生成、调试、测试编写),其次,作为嵌入到应用程序中的功能(设备上图像识别、聊天助手、推荐引擎)。该模块端到端地教授这两种内容。但让我们从一开始就明确一句话:人工智能不会取代移动开发人员;它会取代移动开发者。扩大其生产力和范围。您对发布的每一行代码、请求的每项权限以及使用用户数据进行的每笔交易负责。
在本单元中,我们将了解人工智能在移动开发中在哪些方面产生真正的价值,在哪些方面必须向人类屈服,如何验证每个输出,以及为什么隐私安全规则是不容谈判的。
人工智能在移动开发中的用武之地在哪里?
移动开发由许多重复性和模式化的任务组成:编写视图代码、设置网络请求层、定义数据模型、生成测试用例、解决错误消息。人工智能非常快地产生这些模式。相比之下,架构决策、用户体验偏好、安全边界和业务逻辑的准确性是人类的领域。
根据风险级别将任务分为三个部分很有用:
任务类型
人工智能的作用
男人的角色
模板代码(样板)、示例屏幕、转换
生成草稿,加快速度
评论、整合
业务逻辑、数据流、API集成
提供建议和草稿
验证、测试、验证
架构、权限请求、安全、广播决策
列出选项和理由
做出决定并承担责任
这张表将成为我们整个模块的指南针。右栏永远不会交给人工智能。
提示:将人工智能想象成“速度非常快但缺乏经验的实习生”。你给他一个明确的任务,阅读他的打印输出,对他进行测试,然后你就承担责任。你不要将实习生生成的代码在没有阅读的情况下发送到生产(实时环境);同样的规则也适用于人工智能。
验证纪律:三步
AI文字流畅,看起来自信;但流畅并不等于准确。人工智能有时会拟合一个不存在的库函数(这称为幻觉——模型自信地生成实际不存在的东西)。以下是移动开发人员应用于每个 AI 输出的三步过滤器:
- 编译并运行。代码是否真正编译,应用程序是否打开? AI建议的API真的在SDK(软件开发工具包——平台提供的现成工具集)中吗?
- 测试一下。自动或手动测试预期行为。 “似乎有效”是不够的;尝试边缘情况(空闲数据、无网络、权限被拒绝)。
- 审查并论证。你明白为什么代码要这样写吗?不要发布您不理解的代码。问AI“这条线是做什么的,为什么需要它?”问。
注意:YZ 提供的版本号、库名称和 API 签名可能已过时或伪造。它无法知道截止日期(模型训练的最后日期)之后发布的更新。始终根据官方文档(Apple 开发人员、Android 开发人员)验证关键依赖项。
三个迷你箱子
案例 1——加速屏幕开发。电子商务团队在 Jetpack Compose(Android 的现代界面工具包)的 AI 帮助下起草了产品详细信息屏幕。通常需要 2 天的初稿,在 3 小时内就出来了。但该团队在测试中发现,AI 生成的价格格式进行了错误的四舍五入:19.99 TL 在某些设备上显示为 20 TL。如果没有验证,这个错误就会发生。利润是实实在在的,但控制是必须的。
案例2——出现幻觉。一名开发人员从 AI 获取了代码,用于在 iOS 上请求位置权限。 AI提出了一个名为requestPreciseLocationOnce()的函数。没有这样的 API;正确的是 requestWhenInUseAuthorization()。编译错误立即揭示了这一点。教训:编译器是人工智能最诚实的审计者。
案例 3——隐私陷阱。一个团队将用户错误报告粘贴到人工智能中并寻求解决方案。报告包括用户的电子邮件和设备 ID。这意味着个人数据泄露给第三方服务,并且违反了 KVKK(个人数据保护法)。解决方案:在将数据提供给人工智能之前清除(屏蔽)个人字段。
弱提示/强提示
同一作业的两个提示之间的差异决定了输出的质量。
微弱的提示:“给我写一个登录屏幕。”
强大的提示:“使用 Jetpack Compose for Android 生成登录屏幕。要求:- 电子邮件和密码字段;电子邮件格式验证,密码至少 8 个字符 - 加载时禁用“登录”按钮并显示微调器 - 错误消息以红色文本显示在该字段下 - MVVM 架构:ViewModel 中的状态,仅可组合 UI - Kotlin、Material 3、minSdk 24 只需给出代码,然后每个部分用 1 句话进行解释。”
第二个提示告诉我们平台、工具、架构、边界和输出格式。它没有给人工智能留下任何猜测的余地;因此,它给出了更有用且更容易验证的结果。
可复制的入门模板
通过填写您自己的上下文来使用下面的模板。
角色和上下文模板:“你是一名高级[iOS/Android/Flutter]开发人员。我的项目:[应用类型],目标平台[版本],架构[MVVM/Clean]。任务:[你想要什么]。约束:[语言、库、版本]。首先将计划总结为3项,然后生成代码,然后列出风险。”
代码审查模板:“检查以下[语言]代码。识别:1) 错误和崩溃风险2) 内存/性能问题3) 安全和隐私漏洞4) 可以写得更简单的地方。每个项目的行号并建议更正。[代码]”
学习模板:“从移动开发者的角度解释[概念,例如 Swift 中的 async/await]。举一个简单的例子,提到 3 个常见错误,并指出何时不应该使用它。”
验证模板:“您建议使用此 API/函数:[名称]。验证:它来自哪个 SDK 版本,需要什么权限,是否已弃用?如果不确定,请说‘不确定,请查看官方文档’。”
常见错误
- 粘贴输出而不阅读它。最常见和最危险的错误。即使编译了,逻辑也可能是错误的。
- 将机密数据提供给人工智能。 API 密钥、用户数据、签名证书永远不会粘贴到请求中。
- 不验证版本和 API。 AI 可能会建议过时或虚构的 API;官方文档拥有最终解释权。
- 将架构决策留给人工智能。 “哪一个是最好的建筑?”问题的答案取决于您的项目; AI给出了一个通用的答案,你知道上下文。
- 写一篇巨大的提示。尝试通过单个请求解决复杂的任务;将其分解为可验证的小步骤会更安全。
- 请求许可“以防万一”。 AI 有时会添加不必要的权限;每个权限都会给存储批准和用户信任带来风险。
总之
人工智能在移动开发中扮演着两个角色:加速开发过程的助手和应用程序嵌入功能。模式代码为绘图和学习提供了巨大的加速;但架构、安全、许可和发布决策都是人为的。每个输出都通过三个步骤进行验证:编译-运行、测试、审查。机密数据和个人信息永远不会提供给人工智能。强需求平台明确说明了工具、约束条件和输出格式。该规则是本模块其余部分的基础。
应用任务
从您自己的移动项目(或想象的“笔记应用程序”)中选择一个屏幕。使用上面的“角色和上下文模板”为该屏幕编写提示。尝试将人工智能生成的代码编译到项目中,并通过三步验证过滤器:它是否编译,是否按预期工作,您是否理解每一行?记下至少一个您发现的错误或虚假 API。
清单
- [ ] 我根据任务的风险级别确定了该任务属于三个类别中的哪一个
- [ ] 我在请求中指定了平台、版本、架构和约束
- [ ] 我编译了输出并运行了它
- [ ] 我测试了极限情况(空闲数据、无网络、权限被拒绝)
- [ ] 我确保我理解每一行
- [ ] 我没有向AI提供任何个人数据或私钥
- [ ] 我从官方文档中验证了关键 API