编程笔记

AI 辅助编程到底能帮程序员干什么

2024-11-08  本文已影响0人  老瓦在霸都

最近一段时间,使用了一些 AI 编程工具, 在我的 VSC 上安装了 Codeium, Tongyi, 以及试用了一段时间的 Cursor

这些 AI 工具, 的确是程序员的好帮手,不仅能提高生产力、减少重复劳动,还能帮忙解决烧脑的问题, 在写代码的时候, 有时候它的提示比我的脑子转得还快, 虽然有时有点过于勤快, 自以为是的给出了一些错误提示。

以前是 "内事不决定问度娘, 外事不决问谷哥", 现在都问 ChatGPT 了, 我也写了一些小工具, 通过程序构建自己的 prompt, 调用 ChatGPT 的接口, 得到更准确详细的建议。现在大模型接口 API 的调用费用很便宜, 象我常用的 DeepSeek, 也能用于 cursor, 十块钱用到现在还没花完.

cursor with deepseek

自从用了这些 AI 辅助工具, 我写注释也比以前勤快多了, AI 能根据我定义的接口和写的注释, 快速生成代码, 我主要是把握大方向, 关注关键的细节, 效率翻倍.

总结一下, AI可以通过以下方式帮助咱们程序员:

方式

  1. 代码生成和自动补全

    AI工具(比如GitHub Copilot和ChatGPT)能根据你的注释或半截代码生成代码片段、补全代码行,甚至直接给出整段函数。写代码速度快得飞起,还能更准确哦!

  2. 调试和错误检测

    AI能帮忙找Bug,还能给出修复建议,经常发现那些“难以察觉”的问题。像DeepCode和GitHub的CodeQL这类工具可以分析代码中的潜在漏洞并提出改进方案,让代码更安全更牢靠!

  3. 自动化测试

    AI可以根据代码分析生成测试用例,覆盖更多测试场景,增加代码覆盖率。这样可以更早发现Bug,确保代码质量,真是节省开发人员的时间和精力。

  4. 文档生成助手

    AI能自动生成函数、类和模块的文档,再也不用手动去写繁琐的注释了!这让代码库更易维护,也更容易让其他开发人员理解。

  5. 代码重构和优化

    AI工具会提出代码重构建议,提高代码的可读性、性能和可维护性。这样能保持代码库整洁、统一,还特别适合大型项目,省心省力。

  6. 学习和知识共享

    AI工具能为复杂算法或不熟悉的库和框架提供解释,让开发人员在工作中边学边做。对新手和专家来说,这都是宝贵的学习资源。

  7. 快速原型开发

    AI可以根据高层描述快速生成原型,团队能在正式实现前尝试不同的想法,想试就试,灵活度满分。

  8. 特定场景支持

    针对Web开发、数据科学和机器学习领域的AI工具,能在数据预处理、模型选择和API集成等专业任务中提供帮助。再也不怕应对专业场景啦!

  9. 代码评审助手

    AI在代码评审中可以提出改进建议、检查编码标准并提供优化意见,让代码审查变得又快又彻底!

总的来说,AI辅助编程让我们更多地关注创造性和高层次任务,减少重复的体力活,确保更高的开发质量和效率。

示例

  1. 代码生成和自动补全
def register_user(username, password):
    if user_exists(username):
        return "User already exists"
    else:
        add_user_to_db(username, password)
        return "User registered successfully"

def user_exists(username):
    # 检查数据库中是否存在用户名
    pass

def add_user_to_db(username, password):
    # 将用户添加到数据库
    pass

这样,AI 辅助编程工具可以快速生成函数的基础结构,使得开发更高效。

  1. 调试和错误检测
if index < len(my_list):
    print(my_list[index])
else:
    print("Index out of range")

这帮助开发者迅速定位并修复错误,减少调试时间。

  1. 自动化测试
import unittest

class TestDiscountCalculation(unittest.TestCase):
    def test_positive_discount(self):
        self.assertEqual(calculate_discount(100, 10), 90)

    def test_zero_discount(self):
        self.assertEqual(calculate_discount(100, 0), 100)

    def test_full_discount(self):
        self.assertEqual(calculate_discount(100, 100), 0)

    def test_negative_price(self):
        with self.assertRaises(ValueError):
            calculate_discount(-100, 10)

if __name__ == "__main__":
    unittest.main()

AI 自动生成的测试覆盖了各种常见情况,帮助确保函数的可靠性。

  1. 文档协助
def fetch_data_from_api(api_url):
    """
    从指定的 API URL 获取数据。

    参数:
    api_url (str): API 的 URL。

    返回:
    dict: JSON 格式的响应数据。

    抛出:
    ValueError: 如果 URL 格式不正确。
    """
    # 函数体

生成的文档使代码更具可读性,方便他人使用和维护。

  1. 代码重构和优化
def check_duplicates(items):
    for i in range(len(items)):
        for j in range(i + 1, len(items)):
            if items[i] == items[j]:
                return True
    return False

AI 工具建议将其重构为更高效的方式,使用集合提高速度:

def check_duplicates(items):
    return len(items) != len(set(items))

重构后的代码效率更高,特别是在处理大量数据时。

  1. 学习和知识共享
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

解释:递归函数 factorial 通过不断调用自身,直到 n 等于 0 时停止递归。AI 工具可以用这种方式帮助开发者学习新概念。

  1. 快速原型开发
<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        .product {
            border: 1px solid #ddd;
            padding: 16px;
            text-align: center;
        }
        .product img {
            width: 100px;
            height: 100px;
        }
    </style>
</head>
<body>
    <div class="product">
        <img src="product.jpg" alt="Product Image">
        <h2>Product Name</h2>
        <p>$19.99</p>
    </div>
</body>
</html>

这样开发者可以快速构建页面雏形,便于后续改进和测试。

  1. 特定用例支持

from sklearn.feature_extraction.text import ENGLISH_STOP_WORDS
from nltk.stem import PorterStemmer
import re

def preprocess_text(text):
    text = re.sub(r'\W', ' ', text)  # 移除非字母字符
    words = text.lower().split()
    stemmer = PorterStemmer()
    return [stemmer.stem(word) for word in words if word not in ENGLISH_STOP_WORDS]

AI 工具生成了整个预处理函数代码,简化了复杂的文本处理任务。

  1. 代码审查协助
function greetUser(input) {
    return "Hello, " + input + "!";
}

AI 工具建议使用适当的转义来防止 XSS 攻击,并生成改进后的代码:

function greetUser(input) {
    const sanitizedInput = input.replace(/</g, "<").replace(/>/g, ">");
    return "Hello, " + sanitizedInput + "!";
}

AI 工具不仅识别出潜在的漏洞,还提供了解决方法,有助于提高代码的安全性和可靠性。

这些示例展示了 AI 在不同编程环节中如何为开发者提供支持。无论是加速开发、提高代码质量,还是帮助理解新概念,AI 工具都可以帮助开发者专注于更具创造性的工作,提升编程效率。

参考链接



本作品采用 AI 辅助创作。
上一篇 下一篇

猜你喜欢

热点阅读