使用Chat gpt提高Android开发效率

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 非常有用的几个用例。我相信我会发现更多,我使用它的次数越多。我会确保在找到它们时分享它们。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DAY04_JDBC快速入门JDBC API详解SQL防注入数据库连接池JDBC综合练习

目录 1 JDBC1.1 JDBC概念1.2 JDBC本质 1.3 JDBC好处 2 JDBC快速入门2.1 编写代码步骤2.2 具体操作 3 JDBC API详解3.1 DriverManager3.2 Connection3.2.1 获取执行对象3.2.2 事务管理 3.3 Statement3.4 ResultSet3.4.1 ResultSet案例 3.5 PreparedStatement3.5.1 SQL注入3.5.2 …

hutool文件导出

hutool文件导出 需求&#xff1a;管理员设置会议&#xff0c;参加会议会根据管理员设置的会议要求&#xff0c;用户参加会议填写相关数据&#xff0c;并且生成一个动态的excel数据并导出 示例&#xff1a; 每场都可以自定义报名字段 根据需求与前端约定 字段名称&#xff08;n…

Koa学习1:初始化项目

前言 作为前端开发者&#xff0c;最适合我们的后端就是node了&#xff0c;node的框架挺多的。选择Koa是因为国内用的挺多的、关于这方面的教程也很多、而且比较适合小项目。 学习教程是&#xff1a;【杰哥课堂】-项目实战-NodeKoa2从零搭建通用API服务 写这些文章&#xff0…

javascript基础九:说说Javascript中的继承?如何实现继承?

一、是什么 继承&#xff08;inheritance&#xff09;是面向对象软件技术当中的一个概念 如果一个类别B“继承自”另一个类别A&#xff0c;就把这个B称为“A的子类”&#xff0c;而把A称为“B的父类别”也可以称“A是B的超类” 继承的优点 继承可以使得子类具有父类别的各种属性…

Java 版 spring cloud 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…

【企业化架构部署】Apache网页优化

文章目录 一、Apache网页优化概述1.优化内容2.网页压缩2.1gzip概述2.2作用2.3Apache的压缩模块概述mod_gzip模块与mod_deflate模块 3.配置网页压缩功能3.1启用网页压缩功能步骤3.2具体操作步骤 4.配置网页缓存功能4.1启用网页压缩功能步骤4.2具体操作步骤 二、Apache安全优化1.…

设计模式之~工厂系列(简单工厂、工厂方法、抽象工厂)

目录 简单工厂模式 工厂方法模式 简单工厂 VS 工厂方法 抽象工厂模式&#xff1a; 拓展&#xff1a; 利用简单工厂模式优化抽象工厂 利用反射抽象工厂 进行优化 反射配置文件抽象工厂进行优化 简单工厂模式 优点&#xff1a;简单工厂模式的最大优点在于工厂类包含…

计算机专业主要学习什么

2020计算机专业主要学习什么 1计算机专业都学习哪些方面的知识 1、可视化编程 掌握编程方法和可视化技术&#xff0c;熟悉一个可视化平台及其软件开发技术。能够获取Delphi编程人员系列&#xff0c;Java Basic或VB开发专家认证。 就业方向&#xff1a;企业&#xff0c;政府&…

vue前端分页功能怎么实现

Vue前端分页功能可以通过以下几个步骤实现&#xff1a; 1. 安装分页组件库&#xff08;如vue-pagination-2&#xff09;&#xff1a; bash npm install vue-pagination-2 2. 在Vue项目中引入并注册分页组件&#xff1a; javascript import Vue from vue; import Pagination fr…

传地址给组件并让该组件用到地址在背景图片中的方法

问题 这是我在开发中遇到的问题。在网站的分页面中&#xff0c;背景图片的格式几乎一模一样。只是上面的文字和图片不一样而已。 所以我希望写一个组件&#xff0c;然后页面只需要传入背景图片地址和标题就可以显示出相关内容。 于是我动手写了&#xff0c;大致思路是一个盒…

判断点在多边形内算法的C++实现

本篇博客介绍了使用射线法判断点在多边形内部还是外部的算法&#xff0c;并通过C做了具体实现 1. 算法思路 判断平面内点是否在多边形内有多种算法&#xff0c;其中射线法是其中比较好理解的一种&#xff0c;而且能够支持凹多边形的情况。该算法的思路很简单&#xff0c;就是…

AMEYA360:纳芯微推出车规级耐高压、三线霍尔开关及锁存器NSM101x系列

纳芯微推出全新三线制车规霍尔效应开关/锁存器NSM101x系列&#xff0c;为数字位置检测提供高精度的解决方案&#xff0c;可被广泛应用于汽车执行器等的位置检测。 NSM101x产品系列包含了3个产品型号&#xff0c;即NSM1011(单极霍尔开关)、NSM1012(全极霍尔开关)、NSM1013(霍尔锁…

【Unity】Playable使用细则

【Unity】Playable使用细则 本文基于Unity 2021.3 API。 本文介绍官方文档中没提及的Playable使用限制、注意事项、Bug及规避方案&#xff0c;不是Playable的入门教程&#xff01; 如果你还不熟悉Playable的基础用法&#xff0c;请先学习以下官方文档和示例&#xff1a; Playa…

基于STM32的定时器--定时中断(HAL库)

基于STM32的定时器--定时中断&#xff08;HAL库&#xff09; 介绍引言定时器介绍 实例项目介绍准备设计流程 介绍 引言 本文旨在介绍如何使用STM32CubeMX配置KEIL 5开发一个每10us定时器中断触发一次的项目。帮助初学者入门STM32的定时器使用。 定时器介绍 定时器是STM32微…

chatgpt赋能python:Python升降序排列数字

Python升降序排列数字 在Python编程中&#xff0c;排序是一个非常常见并且重要的操作。Python提供了多种排序算法以满足不同的需求。 排序算法 Python中内置的排序算法有两种&#xff1a;Timsort和Quicksort。其中Timsort是一种混合排序算法&#xff0c;结合了插入排序和归并…

Linux系统中源码安装1.8.x版本Arduino IDE

本文内容参考&#xff1a; Ubuntu22.04安装Arduino IDE及Arduino UNO&#xff08;使用CH341驱动&#xff09;调试方法__KILLMILEDC_的博客-CSDN博客 在Linux上下载arduino_不说话的白帽子的博客-CSDN博客 https://guoqing.blog.csdn.net/article/details/88913063?spm1001.…

Linux NGINX服务 ReWrite^location

ReWrite^location 从功能看 rewrite 和 location 似乎有点像&#xff0c;都能实现跳转&#xff0c;主要区别在于 rewrite 是在同一域名内更改获取资源的路径&#xff0c;而 location 是对一类路径做控制访问或反向代理&#xff0c;还可以proxy_pass 到其他机器。 rewrite 对访问…

c++ new 源码学习一下

之前有一篇文章介绍了 new 的一些用法 c new 在指定内存上创建对象&#xff0c;今天结合源码来学习一下 new 更详细的用法。相关的源码&#xff1a;gcc git 1&#xff0c;void* operator new (std::size_t size); 我们可以在头文件<new>里看到它的原型&#xff1a; _G…

C++11 -- lambda表达式

文章目录 lamaba表达式的引入lambda表达式语法lamabda达式各部分说明捕获列表说明 lamaba表达式底层原理探索 lamaba表达式的引入 在C11之前,如果我们想对自定义类型Goods排序,可以根据姓名,价格,学号按照从大到小或者从小到大的方式排序,可是,这样我们要写额外写6个相关的仿函…

Quest 3初体验,或是苹果MR最大竞争对手

随着苹果MR临近&#xff0c;我们从彭博Mark Gurman了解到更多消息。昨日&#xff0c;Mark Gurman发布了Quest 3上手体验文章&#xff0c;并认为Quest 3可能是苹果MR头显最大的竞争对手。 1&#xff0c;Meta是XR头显领导者 尽管WWDC 23苹果MR将会成为最大的主角&#xff0c;但…