使用Chat gpt提高Android开发效率

news2024/11/25 21:40:47

logo

简介

在过去几周里,我进行了一项令人大开眼界的实验,将 Chat-GPT(我使用的是 Bing Chat,它在后台使用了 GPT-4,并且可以免费使用)融入到我的日常 Android 开发工作流程中,以探索它是否能够提高我的工作效率。这实在是一个令人兴奋的实验!

几天以后,我对它加速我的开发工作流程的能力感到震撼!我能够以更快的速度完成更多任务!通过一段时间的尝试,我对其中的主要用例有了深入的了解,Chat-GPT 能够在您的开发工作中节省大量时间。因此,我将在本文中与大家分享这些内容。

请注意:我将在整篇文章中使用 Chat-GPT 来指代 Bing Chat,因为它们本质上是同一个工具。

适用于新手 Android 开发者的提示
首先,如果您是 Android 开发的新手,那么本文可能不太适合您。这篇文章更适合中级和高级的 Android 开发人员。

其次,不要仅仅依赖 Chat-GPT 这样的大型语言模型来盲目复制粘贴代码,而不去理解代码的作用。了解 Android 开发是一项比仅仅复制粘贴代码更有价值的技能。很多人可能没有意识到这一点,但是当您对 Android 开发的基础知识有了扎实的掌握后,您就能以更高效的方式利用语言模型,从而大大提升您的工作效率。

ChatGPT在哪些方面可提高Android开发者工作效率

生成文档

让我们从一个非常简单的用例开始。编写文档是您作为开发人员要做的最重要的事情之一。它不仅可以帮助其他人了解您的代码的作用,还可以帮助您提醒自己,当您在很长一段时间后回来重新访问时,您编写的代码正在执行什么操作。

传统上,它一直是许多程序员的祸根,因为它占用了宝贵的时间,无法实际编码您要构建的东西。在这里,Chat-GPT 可以节省大量时间!只需让它为您生成文档即可。但是,如果它没有传达您的想法,请确保校对和修改它生成的文档。这是一个超级有用的用例,它为我节省了大量时间!这是一个例子

// The function which needs to be documented
  suspend fun getPlacesSuggestionsForQuery(
      @Query("q") query: String,
      @Query("session_token") sessionToken: String,
      @Query("limit") @IntRange(1, 10) limit: Int = 10
  ): Response<SuggestionsResponse>

提示:为以下方法生成 KDOC kotlin 文档 — “…”

为上面的代码片段生成的文档

生成映射函数

这是一个简单但非常有用的用例。如果您通过应用一些干净的架构原则来编写您的应用程序,您可能会编写很多映射器函数。在大多数情况下,这些是您必须编写的样板代码,以便将一个架构层中使用的对象转换为不同架构层中使用的对象。

同样,Chat-GPT 可以使编写所有这些映射器函数的工作变得轻而易举!只需添加两个类的定义,并要求它编写一个映射器函数即可。就这么简单!只需确保验证它生成的代码是正确的。这是一个例子。

// Class 1
data class WeatherDetails(
    val nameOfLocation: String,
    val temperature: Temperature,
    val wind: Wind,
    val weatherCondition: WeatherCondition,
    val humidity: String,
    val pressure: String
) {
    data class Temperature(
        val currentTemp: String,
        val minTemperature: String,
        val maxTemperature: String,
    )

    data class Wind(val speed: String, val direction: String)

    data class WeatherCondition(
        val oneWordDescription: String,
        @DrawableRes val currentWeatherConditionIcon: Int,
    )
}

// Class 2
data class BriefWeatherDetails(
    val nameOfLocation: String,
    val currentTemperature: String,
    val shortDescription: String,
    @DrawableRes val shortDescriptionIcon: Int,
)

提示:为以下两个类编写一个映射器函数——“…”和“…”

两个类的 Generated Mapper 函数
但是,我希望映射器函数成为该类的扩展WeatherDetails。因此,我要求将其作为扩展功能。

提示:将其作为 WeatherDetails 类的扩展函数

对上述提示的回应要求将其作为扩展功能

用样本数据填充数据类

作为一名开发人员,您肯定遇到过这样一种情况:您需要创建一个带有样本数据的模型数据类的实例,以一时兴起来测试一些东西。好吧,这是 Chat-GPT 的完美用例。假设我想填充此类的所有属性以快速测试可组合函数。

data class BriefWeatherDetails(
    val nameOfLocation: String,
    val currentTemperature: String,
    val shortDescription: String,
    @DrawableRes val shortDescriptionIcon: Int
)

@Preview
@Composable
private fun Preview(){
.
.
  CompactWeatherCard(
        modifier = Modifier.padding(horizontal = 16.dp),
        briefWeatherDetails:BriefWeatherDetails = //need a fake instance here,
        onClick = { /*TODO*/ }
  )
.
.

}

我可以简单地要求 Chat-GPT 生成一个类的实例,其中填充了样本数据。

提示:使用样本数据创建此类的一个实例——“……”
上述类的生成实例,填充了示例数据

除了需要更改图标的资源 ID 之外,我还得到了一个充满示例数据的实例,我可以立即使用它!如果我提到了资源 ID,它可能也会正确添加它!

生成 composable previews

如果您使用 Jetpack Compose,那么这就是为您准备的!设置可组合预览可能是一项相对耗时的任务。您必须创建一个新的私有函数,用 注释它@Preview,用您的主题可组合项包围可组合项,并用示例数据填充可组合项的参数。光是查看可组合项的预览就需要做大量工作!

不用担心!你可能已经猜到了!Chat-GPT 支持您!只需让它为您完成所有工作!这是一个例子。

// Here's an overload of the previous composable that doesn't depend on any 
// domain object. Let's ask Chat-GPT to generate a preview for us.
fun CompactWeatherCard(
    nameOfLocation: String,
    shortDescription: String,
    @DrawableRes shortDescriptionIcon: Int,
    weatherInDegrees: String,
    onClick: () -> Unit,
    modifier: Modifier = Modifier
) {...}

提示:为以下可组合项创建一个预览可组合项 — “…”

生成的预览可组合项
它甚至自己用示例数据填充了可组合项的参数.
现在,我想用CompactWeatherCard一个主题可组合项和一个表面可组合项包围可组合项。所以,我要求它也这样做。

提示:使用名为 WeatherAppThemeComposable 的可组合项和 Surface 可组合项包裹预览中的可组合项

在theme和surface可组合项内生成的预览可组合项

我注意到主题可组合项具有后缀“Composable”,因为我在之前的提示中犯了一个错误。让我们纠正它。

提示:将 WeatherAppThemeComposable 重命名为 WeatherAppTheme

生成的预览可组合项“WeatherAppThemeComposable”重命名为“WeatherAppTheme”

结论

这篇博文到此结束 ,这些只是我发现 Chat-GPT 非常有用的几个用例。我相信我会发现更多,我使用它的次数越多。我会确保在找到它们时分享它们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马Redis视频教程高级篇(安装OpenResty)

目录 一、安装 1.1、安装开发库 1.2、安装OpenResty仓库 1.3、安装OpenResty 1.4、安装opm工具 1.5、目录结构 1.6、配置nginx的环境变量 二、启动和运行 三、备注 一、安装 首先你的Linux虚拟机必须联网。 1.1、安装开发库 首先要安装OpenResty的依赖开发库&#…

Spring Bean生命周期之三级缓存循环依赖

文章目录 1 三级缓存1.1 引言1.2 三级缓存各个存放对象1.3 解决循环依赖条件1.3.1 解决循环依赖条件1.3.2 Sprin中Bean的顺序1.3.3 更改加载顺序1.3.3.1 构造方法依赖 (推荐)1.3.3.2 参数注入1.3.3.3 DependsOn(“xxx”)1.3.3.4 BeanDefinitionRegistryPostProcessor接口 1.3.4…

Pandas从入门到精通

一、什么是Pandas Pandas是基于NumPy的一种工具&#xff0c;该工具是为解决数据分析任务而创建的&#xff0c;Pandas提供了大量能使我们快速便捷的处理数据的功能 Pandas与出色的Jupyter 工具包和其他库相结合&#xff0c;Python中用于进行数据分析的环境在性能、生产率和协作…

javascript基础二十四:JavaScript中本地存储的方式有哪些?区别及应用场景?

一、方式 javaScript本地缓存的方法我们主要讲述以下四种&#xff1a; cookiesessionStoragelocalStorageindexedDB cookie Cookie&#xff0c;类型为「小型文本文件」&#xff0c;指某些网站为了辨别用户身份而储存在用户本地终端上的数据。是为了解决 HTTP无状态导致的问题…

IDEA插件Free Mybatis Tool

之前经常的操作是在 Mapper 接口中将接口名称复制一下&#xff0c;然后去查找对应的 XML 文件&#xff0c;打开后 CRTLF 查找对应的 xml 实现&#xff0c;整个过程效率很低下。搜了搜果然有前辈已经出了一款 IDEA 的插件解决了这个问题&#xff0c;把这个好用的跳转插件推荐给大…

leetcode 55.跳跃游戏

题目描述跳转至leetcode 给定一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://lee…

软件测试-黑盒测试方法

这里写自定义目录标题 测试用例的定义和特征设计测试用例的基本准则黑盒测试用例设计的几种方法&#xff08;一&#xff09;等价类划分法等价类的类型 如何划分等价类等价类划分步骤等价类的划分原则等价类划分法设计测试用例的步骤 &#xff08;二&#xff09;边界值分析法边界…

oVirt 4.4.10三节点超融合集群安装配置及集群扩容(一)

环境 oVrit版本: 4.4.10 oVirt image: https://mirrors.aliyun.com/ovirt/ovirt-4.4/iso/ovirt-node-ng-installer/4.4.10-2022030308/el8/ovirt-node-ng-installer-4.4.10-2022030308.el8.iso?spma2c6h.25603864.0.0.46c8a3e6ELIYzK oVirt engine appliance: https://mirror…

osgViewer中的ScreenCaptureHandler、LODScaleHandler、HelpHandler事件处理器用法

目录 1. 前言 2. osgViewer::ScreenCaptureHandler 3. osgViewer::LODScaleHandler 4. osgViewer::HelpHandler 5. osgViewer::ThreadingHandler 1. 前言 osg为视景器的使用和调试提供了丰富的辅助组件&#xff0c;它们主要是以osg::ViewerBase的成员变量或交互事件处理器…

风险SQL 规范及案例

一、 原则 1、程序处理优先:数据库最容易也通常是一个系统的瓶颈,因此不要给数据库加压力,能够程序处理就程序处理。 2、简单操作数据库:一个系统越简单越稳定越不容易出问题, 因此要尽量简单使用数据库, 如SQL简单,事务小 3、数据存储评估:数据库资源宝贵,是很难水平…

饮用水污染预警系统的设计与开发(前后端分离)

1.饮用水污染预警系统的介绍 随着工业化和城市化进程的加速&#xff0c;水污染问题越来越引起人们的关注。饮用水是人类赖以生存的重要资源之一&#xff0c;饮用水污染对人类健康和社会经济发展产生的影响愈加突出。近年来&#xff0c;我国政府高度重视饮用水污染治理工作&…

车牌识别系统Python,基于深度学习CNN卷积神经网络算法

一、介绍 车牌识别系统&#xff0c;基于Python实现&#xff0c;通过TensorFlow搭建CNN卷积神经网络模型&#xff0c;对车牌数据集图片进行训练最后得到模型&#xff0c;并基于Django框架搭建网页端平台&#xff0c;实现用户在网页端输入一张图片识别其结果&#xff0c;并基于P…

自学黑客!一般人我劝你还是算了吧!

笔者本人 17 年就读于一所普通的本科学校&#xff0c;20 年 6 月在三年经验的时候顺利通过校招实习面试进入大厂&#xff0c;现就职于某大厂安全联合实验室。 我为啥说自学黑客&#xff0c;一般人我还是劝你算了吧&#xff01;因为我就是那个不一般的人。 首先我谈下对黑客&am…

Andriod开发 Adapter ArrayAdapter

一、Adapter Adapter 是一个非常重要的组件&#xff0c;用于将数据与视图进行绑定。 一般的用法是一个View中要显示多个布局相同但数据不同的item&#xff08;例如论坛界面的多个帖子&#xff0c;购物车里的多个商品&#xff09;。 可以将item的布局和数据输入Adapter&#…

Django Admin Cookbook-5如何在Django Admin后台中添加Logo

目录 后台显示文字与自定义 1.如何更改管理后台标题Django administration&#xff1f; 2.如何设置模型的复数文本&#xff1f; 3.如何创建两个独立的管理站点&#xff1f; 4.如何从Django管理后台中删除默认应用程序&#xff1f; 5.如何在Django管理后台中添加Logo&#xff…

C++语法(24) 哈希应用

C语法&#xff08;23&#xff09;-- 模拟实现unordered_set和unordered_map_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130449452?spm1001.2014.3001.5501 目录 1.位图 1.定义 2.实现 3.应用 4.特点 2.布隆过滤器 1.介绍 2.设计场…

STM32F407输入捕获

文章目录 F407定时器输入捕获实验支持输入捕获的定时器有哪些输入捕获工作过程输入捕获测量高电平脉宽原理滤波器设置 配置步骤开启TIM5时钟与端口时钟配置PA0为用能复用功能&#xff08;AF2&#xff09;初始化端口并开启下拉电阻初始化TIM5设置TIM5的输入捕获参数TIM_Channel通…

数字信号处理10:Z变换(2)

今天我就不写后面的Z变换的剩下的东西了&#xff0c;直接写代码&#xff1a; 说实话&#xff0c;Python的Scipy.signal里面是没有和matlab一样的ztrans和iztrans&#xff0c;这让我头疼了几天时间&#xff0c;但是后面&#xff0c;看文档的时候&#xff0c;突然发现&#xff0…

Vue2模拟贪吃蛇小游戏

目录 一、效果展示 二、代码展示 三、原理讲解 3.1、页面创建 3.2、创建蛇与食物 3.3、移动与边界判断 3.4、吃、得分总结 二、代码展示 view的本地文件&#xff1a;可直接运行。 <template><div class"game"><div class"game-div"…

【架构基础】SOLID原则

SOLID原则是一套坚实而有效的软件设计原则&#xff0c;它由Robert C. Martin&#xff08;也称为 Uncle Bob&#xff09;在2000年提出&#xff0c;旨在帮助软件开发者设计出高内聚低耦合的软件&#xff0c;构建易于测试、可维护和可扩展的软件系统&#xff0c;降低软件后期的维护…