如何让chatgpt十分正确的帮咱们编写代码文档和单元测试

部署运行你感兴趣的模型镜像

  有多少次你专注于编程而忘记了写函数、方法、类的非常简单的代码文档?我不是在问单元测试. 直到我发现ChatGPT可以做到这一点:

除了代码文档,它在编写单元测试方面也做得很好。此外,在最后,我可以要求他为其他想使用我的代码的贡献者生成一个用户友好的文档。在这篇文章中,我将告诉你如何使用ChatGPT来写:

写代码文档
写单元测试
生成你的代码的用户文档

让机器学习使软件开发和我们的软件开发人员的生活更容易。

ChatGPT如何帮助编写代码文档
听起来很简单,问问他就知道了。为了说明这一点,我们实际上需要一个代码例子,要求ChatGPT为我们写。

下面是它写的javascript代码:

// This code generates a random number between 1 and 10
function getRandomNumber() {
  return Math.floor(Math.random() * 10) + 1;
}

// This function checks if a number is even
function isEven(number) {
  return number % 2 === 0;
}

// This function doubles a number
function doubleNumber(number) {
  return number * 2;
}

// This function logs the result of doubling a random even number
function logDoubleOfRandomEven() {
  const randomNumber = getRandomNumber();
  if (isEven(randomNumber)) {
    const doubledNumber = doubleNumber(randomNumber);
    console.log(`The double of ${randomNumber} is ${doubledNumber}`);
  } else {
    console.log(`${randomNumber} is not even. Cannot double it.`);
  }
}

// Call the function to log the result of doubling a random even number
logDoubleOfRandomEven();

一些非常简单的函数,没有什么代码文档让我们了解发生了什么事。,困难的部分已经完成了! 让我们来看看有趣的部分! 我们可以打开ChatGPT的聊天记录,很好地命令他:

为这段代码添加jsDoc,并确保包含代码标签,包括你想要的代码,如下面的截图所示,并在下面留下一些空间来做:

我使用了确保你包括代码标签,因为它有时会在段落中返回代码,所以这告诉他要在代码块中包括代码。你试过了吗?这是我的结果:

/**
 * Generates a random number between 1 and 10.
 *
 * @returns {number} A random number between 1 and 10.
 */
function getRandomNumber() {
  return Math.floor(Math.random() * 10) + 1;
}

/**
 * Checks if a number is even.
 *
 * @param {number} number - The number to check.
 * @returns {boolean} true if the number is even, false otherwise.
 */
function isEven(number) {
  return number % 2 === 0;
}

/**
 * Doubles a number.
 *
 * @param {number} number - The number to double.
 * @returns {number} The double of the input number.
 */
function doubleNumber(number) {
  return number * 2;
}

/**
 * Logs the result of doubling a random even number.
 */
function logDoubleOfRandomEven() {
  const randomNumber = getRandomNumber();
  if (isEven(randomNumber)) {
    const doubledNumber = doubleNumber(randomNumber);
    console.log(`The double of ${randomNumber} is ${doubledNumber}`);
  } else {
    console.log(`${randomNumber} is not even. Cannot double it.`);
  }
}

// Call the function to log the result of doubling a random even number
logDoubleOfRandomEven();


现在你没有借口不把你的代码写成大师的样子了很好,是吧?

用ChatGPT编写更好的单元测试
现在,一旦我们记录了我们的代码,是时候进一步提高代码质量并添加一些单元测试了。我们再次去聊天,并要求chatgpt:

使用jest编写单元测试
你不需要再包含代码了,它很聪明,明白自己必须为以前的代码写单元测试。只要确保你一直在同一个聊天室里问它,一直如此

这里是我们令人敬畏的单元测试:

const {
  getRandomNumber,
  isEven,
  doubleNumber,
  logDoubleOfRandomEven,
} = require('./example');

describe('getRandomNumber', () => {
  test('should generate a number between 1 and 10', () => {
    const randomNumber = getRandomNumber();
    expect(randomNumber).toBeGreaterThanOrEqual(1);
    expect(randomNumber).toBeLessThanOrEqual(10);
  });
});

describe('isEven', () => {
  test('should return true for an even number', () => {
    const evenNumber = 2;
    expect(isEven(evenNumber)).toBe(true);
  });

  test('should return false for an odd number', () => {
    const oddNumber = 3;
    expect(isEven(oddNumber)).toBe(false);
  });
});

describe('doubleNumber', () => {
  test('should double a number', () => {
    const number = 3;
    expect(doubleNumber(number)).toBe(6);
  });
});

describe('logDoubleOfRandomEven', () => {
  test('should log the double of a random even number', () => {
    const consoleSpy = jest.spyOn(console, 'log');
    const mockedRandomNumber = 4;
    const expectedOutput = `The double of ${mockedRandomNumber} is ${doubleNumber(mockedRandomNumber)}`;
    jest.spyOn(global.Math, 'random').mockReturnValueOnce(mockedRandomNumber / 10);
    logDoubleOfRandomEven();
    expect(consoleSpy).toHaveBeenCalledWith(expectedOutput);
    consoleSpy.mockRestore();
  });

  test('should log an error message if the random number generated is not even', () => {
    const consoleSpy = jest.spyOn(console, 'log');
    const mockedRandomNumber = 3;
    const expectedOutput = `${mockedRandomNumber} is not even. Cannot double it.`;
    jest.spyOn(global.Math, 'random').mockReturnValueOnce(mockedRandomNumber / 10);
    logDoubleOfRandomEven();
    expect(consoleSpy).toHaveBeenCalledWith(expectedOutput);
    consoleSpy.mockRestore();
  });
});

不要完全依赖它,这段代码有时会被破坏,只要拿着它,运行它,如果没有问题就是好的,如果没有问题就重构它,甚至再问他:

这些单元测试是不对的,重新检查它们
这将提供你需要的单元测试,肯定的

用ChatGPT创建用户友好的文档
是时候与我们的伙伴们分享我们的代码了!我们回到聊天室,要求它:写一份用户友好的文档,并提供一些如何使用代码的例子
如果你在同一个聊天室里一直问它,它已经知道你需要什么代码的文档了。生成的文档太长了,不能在这里写,所以我把它分成几个小部分。我非常喜欢chatgpt,因为它是如何组织头文件和代码例子的。

这是它开始的方式,有一个小的介绍:

后来,它进入了使用阶段:

当然,它不知道你将如何导出它以及文件的名称,所以它只是猜测。如果你想要一个更精确的文件,你需要为它提供更多的信息。

正如你所猜测的,它认为这个javascript代码将在nodejs环境中运行,并提供了输入和输出:

标明描述有多好,它能解释你的代码是怎么回事。

最后是代码实例:

例1:生成并加倍一个随机偶数:

例2:生成一个随机数

例3:检查一个数字是否为偶数

例子4:一个数字的两倍

令人印象深刻,对吗?想想看,我们节省了多少时间?不到10分钟,我们就有了代码和用户文档以及单元测试。如果没有ChatGPT的帮助,这需要更多的时间。

使用ChatGPT进行代码文档和测试的好处
简而言之,让我们总结一下这些好处,这些好处可以提高我们的代码质量,节省我们的时间,使我们的工作更容易被别人接受:

ChatGPT有助于自动化编写代码文档的过程,从而形成清晰简洁的文档,易于阅读和理解。这为开发人员节省了宝贵的时间和精力。
ChatGPT可以协助进行单元测试,确保我们的代码经过全面测试,没有错误,并符合行业标准。这有助于提高代码质量。
ChatGPT生成用户友好的文档,使其他贡献者能够轻松理解和使用我们的代码。这确保了文档的一致性,增加了所有用户的可及性。
所有这些好处都促进了团队合作,确保了代码文档的一致性和准确性。

     结论: 拥抱AI辅助的文档和测试以获得更好的结果.总的来说,通过使用ChatGPT,我们可以只专注于编写优秀的代码而不牺牲文档和测试。ChatGPT似乎是一个强大的工具,适用于各种水平和背景的开发人员。无论你是前端开发者还是全栈开发者,它都能帮助你写出符合行业标准的高质量代码,并让所有人都能使用。觉得对您有帮助,请赞一下。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励,也方便你下次能够快速查找,感谢。

如果你想获取该文章配套的视频视频教程以及练手的接口。请狠狠点击下方链接,

并把所需的资料的文章链接发给我即可领取

如果你想获取简历模板+面试技术宝典+求职视频+上千份测试真题,也请狠狠点击下方链接,

并把所需的资料的文章链接发给我即可领取

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>我们正在处理一个用户请求,用户希望我们帮助编写代码。根据提供的引用,我们可以了解到一些背景信息:用户可能面临代码质量不高的问题,并且对自动化代码生成工具感兴趣(如引用[1][3][4][5])。此外,用户还提供了几个示例,包括快速排序的代码扫雷游戏的菜单函数。 由于用户没有明确指定要编写什么代码,我们需要进一步询问用户的需求。但是,根据用户最后一句“请问编写代码”,我们可以假设用户需要一些通用的编程帮助。 然而,根据引用[1],用户提到“手下交付代码总是质量不行”,因此我们可以推测用户可能是一位技术负责人或项目经理,希望提高团队代码质量。同时,引用[4][5]提到了使用AI工具(如Cursor、ChatGPT)来生成代码。 因此,我们可以提供以下帮助: 1. 询问用户具体需要什么功能的代码,以便我们提供针对性的帮助。 2. 根据引用[1]中的建议,提供一些提高代码质量的通用方法(如代码规范、代码审查、自动化测试等)。 3. 如果用户需要生成代码,我们可以根据用户描述的功能生成代码片段。 由于用户没有具体说明,我们首先需要引导用户明确需求。 但是,用户请求中有一个示例是“快速排序”,并且引用了扫雷游戏的部分代码,我们也可以假设用户可能对算法或小游戏开发感兴趣。 考虑到这些,我们可以这样回答: ### 回答 您好!很高兴为您提供编程帮助。为了更准确地满足您的需求,请告诉我您需要编写什么功能的代码?例如: - 您需要实现特定的算法(如排序、搜索)? - 您需要开发一个小型应用程序(如游戏、工具)? - 或者您需要解决特定的编程问题? 另外,根据您之前提到的“手下交付代码质量不行”的问题,我建议您可以考虑以下措施来提高代码质量[^1]: 1. **提供清晰明确的需求文档**:确保开发人员完全理解需求。 2. **建立代码规范**:统一编码风格,提高可读性可维护性。 3. **引入代码审查**:在代码合并前进行审查,及时发现问题。 4. **引入自动化测试**:包括单元测试、集成测试等,确保代码正确性。 5. **提供培训机会**:提升团队的技术能力。 如果您需要生成代码,我们可以利用先进的AI工具(如Cursor、ChatGPT)来辅助生成初始代码,然后进行人工优化测试[^4][^5]。例如,您只需要描述清楚您想要实现的功能,我就可以尝试为您生成代码。 请告诉我您的具体需求,我会尽力为您提供帮助! ### 相关问题 1. 如何选择适合团队的代码规范? 2. 代码审查的最佳实践有哪些? 3. 自动化测试应该包括哪些方面? 4. 如何利用AI工具提高编程效率? 5. 您能我生成一个快速排序的Python代码吗?</think>### 如何帮助编写代码 我将通过以下步骤为您提供编程支持: 1. **明确需求** 请具体描述您需要的功能,例如: - 编程语言(Python/Java/C++等) - 功能类型(算法实现/数据处理/网页开发等) - 特殊要求(性能限制/第三方库等) 2. **代码生成** 根据您的描述生成初始代码框架,例如需要实现排序算法: ```python # 快速排序示例(可替换为其他算法) def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[0] left = [x for x in arr[1:] if x < pivot] right = [x for x in arr[1:] if x >= pivot] return quick_sort(left) + [pivot] + quick_sort(right) ``` 3. **质量优化** 根据您提到的代码质量问题[^1],我们将: - 添加类型注解文档字符串 - 实现单元测试用例 - 遵循PEP8等代码规范 ```python def quick_sort(arr: list) -> list: """ 实现快速排序算法 :param arr: 待排序列表 :return: 排序后的新列表 """ ... # 具体实现 ``` 4. **工具辅助** 建议使用AI编程工具提高效率: - 用[Cursor](https://cursor.sh)自动补全复杂逻辑[^4] - 用[cURL转Python工具](https://curlconverter.com)快速生成网络请求代码[^5] ### 请提供具体需求 您需要实现什么功能?以下是常见场景参考: - 🕹️ 游戏开发(如扫雷游戏[^2]) - 📊 数据处理(爬虫/分析等[^5]) - 🤖 算法实现(排序/搜索等) - 🌐 网站应用(前后端交互) ### 相关问题 1. 如何评估生成代码的质量? 2. 哪些编程场景最适合AI辅助开发? 3. 如何为现有代码添加自动化测试? 4. 代码审查应该关注哪些关键点?[^1] 5. 如何将cURL命令快速转换为Python代码?[^5] 请描述您的具体需求,我将生成完整可运行的代码解决方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值