赞
踩
作为一名软件开发人员,我一直试图编写完美无缺的代码。伟大的代码不仅是功能性的——它还应该优雅、高效和健壮。
但老实说——代码完美的旅程有时感觉像是一场艰苦的战斗。或者更常见的是,一件不值得追求的苦差事。随着最近 AI 的巨大进步,不充分利用可用的东西将是不幸的。
现在,如果您可以让数字助理不知疲倦地在您身边工作,分析每一行代码,在错误和漏洞露出丑陋的头脑之前发现它们,并提出改进建议,将您的工作从优秀提升到卓越,那会怎么样?
好吧,我的朋友们,如果你知道如何有效地使用这些新的人工智能工具,你就可以提高你的编码技能。
在本文中,我想与您分享我利用 AI 提高代码质量的六种最常用方法。它改变了游戏规则,在我的开发过程中释放出新的效率、准确性和创造力水平。因此,让我们一起来看看如何做同样的事情。
开始前的免责声明
就目前而言,我不建议使用 AI 来完整编写您的项目。我已经尝试过几个项目,您很快就会发现结果通常都不尽如人意。
AI 不会让您失望的地方在于成为您的编程助手。你仍然应该是船长,引导你的人工智能的方向。当涉及到琐碎和维护任务时,例如我们将在此处讨论的提高代码质量,这就是 AI 目前的优势所在。
因此,让我们开始吧。
编写代码时使用 AI 的方法
#1 – 创意产生
我将是第一个承认我并不总能为编码问题提出最佳解决方案的人。我记得太多次,我在一个编程任务上工作了几个小时,却碰壁了,然后不得不咨询同事或 Stack Overflow 以获得新的想法。
只有当我从朋友或论坛收到这种外部输入时,我才能让自己摆脱思维障碍并继续提出新想法。但这通常需要时间(通常也需要别人的时间),这对于程序员来说是宝贵的。
所以我求助于人工智能来帮助我。即使在编程之外,我也一直大力提倡人工智能的健康用途之一是产生创意——这对程序员来说并没有什么不同。
克服心理障碍的好方法之一是向 ChatGPT 寻求建议。如果你完整地描述了你的问题,它通常会做得很好,并弄清楚下一步是什么。请记住在您的提示中要具体,这有助于包含您的一些代码片段。
这是我从这个 Stack Overflow 线程向它提出问题的示例,它给出了非常有用的回复:
“您遇到的错误是因为该player.find()方法正在为某些元素返回None,这意味着它无法找到指定类的匹配项。您需要处理这些找不到元素的情况以避免 .AttributeError此外,您可以使用该pandas.read_html()函数来简化从 HTML 中提取表格数据的过程。”
就个人而言,我认为这是一个很好的建议!当然足以让我重回正轨。
我会强调你应该更多地接受这些想法——这样代码 ChatGPT 可能会建议批发。ChatGPT 确实建议了上述问题的代码片段,并且通常提供的代码片段会起作用。但最好谨慎行事,并对您发布的代码负责。
#2 - 利用 AI 进行代码审查
我使用 AI 的下一个好方法是审查我的代码。这对于试图找到自己的立足点并且不完全了解对与错以及要遵循的最佳实践的新程序员特别有用。
我主要建议新程序员使用它,因为我们已经拥有应用程序性能监控工具 (APM) 等工具,可以很好地指示您在大型应用程序上的代码质量。但是,当您是从事较小项目的新开发人员时,AI 是获得快速而有见地的代码审查的好方法。
如果我在第一次学习编码时能够获得对我的代码的个性化反馈,我相信我的学习效率和整体代码质量会更加具体。我什至不想去想我的代码在早期是什么样子的!
有很多很棒的工具可以做到这一点。我的最爱之一是Rankode。他们为您提供个性化的报告,突出您的优势、改进领域以及对您的编程技能的总体评估。这是跟踪您作为程序员的成长并避免任何不良编码习惯的好方法。
Rankode 的 AI 代码质量审查
像这样的 AI 工具对于提高程序员的整体代码质量至关重要
#3 - 人工智能辅助代码完成
现在,我已经讨论了用 AI 生成创意,并且还提到我反对从 ChatGPT 或其他 AI 工具中批发代码。所以这一点有点不同。
通常当我脑子里有概念时,比如二分搜索或归并排序,作为一个新程序员,我可能很难将这些概念的理论转化为实际代码。因此,与其试图让自己陷入错误代码的陷阱,更好的选择是求助于人工智能,让自己清楚地了解需要什么。
这就是 AI 和 ChatGPT 等工具做得很好的地方,它们可以单独创建代码片段。您将能够很好地了解二进制搜索、归并排序的结构以及您希望在代码中写入的其他概念。
例如,我问 ChatGPT
“我正在尝试学习二进制搜索。我理解这个理论,但想用代码编写它。你能给我一个例子来解释它可能是什么样子吗?”
这就是我得到的:
def binary_search(arr, target): """ Perform binary search on a sorted list to find the target element. Arguments: arr -- A sorted list of elements. target -- The element to be found. Returns: The index of the target element if found, or -1 if it doesn't exist. """ low = 0 # Initialize the lower bound of the search range high = len(arr) - 1 # Initialize the upper bound of the search range while low <= high: # Repeat the process until the range is valid mid = (low + high) // 2 # Calculate the middle index if arr[mid] == target: # Check if the middle element is the target return mid if arr[mid] < target: # If the middle element is smaller, narrow the range to the upper half low = mid + 1 else: # If the middle element is larger, narrow the range to the lower half high = mid - 1 return -1 # Target element was not found # Example usage sorted_list = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] target_element = 11 result = binary_search(sorted_list, target_element) if result != -1: print("Element", target_element, "found at index", result) else: print("Element", target_element, "not found in the list.")
连同大量的解释。现在,我可以以这段代码为基础,切换到一个新的代码编辑器,并亲自尝试一下(再次强调,如果你真的想学习,不要复制这段代码)。如果我再次碰壁并且我似乎无法继续,我有一个完美注释的代码片段可供参考。
这是充当代码指南并确保您不会偏离路径的好方法。
#4 - 错误检测
人工智能在提高代码质量方面的另一个具体应用是缓解程序员普遍存在的痛点——错误修复。
这些工具有很多,包括经过 AI 增强的新的和更新的Github Copilot 。它充当您的内置 AI 助手,在您进行过程中提供建议并保持代码质量。
我们都非常了解仅仅因为一个微小的错误而整夜熬夜的感觉。好吧,在 AI 的帮助下,这将会变得更好,这对于没有 QA 团队的奢侈的小规模项目的新程序员或初级开发人员来说是完美的。
随着代码质量的提高,它还降低了代码中出现漏洞的可能性,尤其是当您不是经验丰富的程序员时。
总的来说,我对我的项目的代码质量感到更加放心,因为我知道我有一个额外的 AI 检查和审计层。
#5 - 人工智能驱动的性能优化
基于我们之前讨论的要点,这有点隐含。但我不能夸大它。同样,与其诉诸于大多数程序员无法访问的 APM 等行业工具,您现在可以在不花费大量资金的情况下优化您的代码。
学习如何利用 AI 进行性能优化是确保您发布的代码质量更高的好方法。简单地使用 AI 工具检查您的方法或函数的实现是否使用了最佳运行时是提高编码质量标准的好方法。
例如,我想检查我的一个功能的性能,所以我问了 ChatGPT:
“我的功能运行缓慢,你能给我一些可能的优化吗?” (粘贴以下代码时)
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
这就是我收到的:
“当然!这是冒泡排序算法的优化版本,并附有解释:
def bubble_sort(arr): n = len(arr) for i in range(n): # Flag to track if any swaps are made in the current pass swapped = False # Last i elements are already in place, so no need to iterate over them for j in range(0, n-i-1): if arr[j] > arr[j+1]: # Swap elements if they are in the wrong order arr[j], arr[j+1] = arr[j+1], arr[j] swapped = True # If no swaps were made in the current pass, the array is already sorted if not swapped: break return arr
优化说明:
引入了一个swapped标志:该标志用于跟踪当前通道中是否进行了任何交换。如果没有发生交换,这意味着数组已经排序,我们可以提前终止排序过程。这种优化有助于输入数组已经部分或完全排序的情况。
减少内循环的范围:在最初的实现中,内循环总是遍历整个数组,即使最后几个元素已经排序。通过将内部循环的范围缩小到n-i-1,我们避免了在每次遍历中对已排序元素进行不必要的迭代。
提前终止:一旦swapped标志在完整传递后仍然存在False,我们就可以跳出外层循环,因为它表明数组已经排序。”
一点都不差劲!当然这只是一个简单的例子。但是在应用程序或项目的整个开发过程中应用这种策略肯定会有所作为。
我已经广泛使用了它,尤其是在孤立地查看代码块时。这是一个很好的方法来弥补你糟糕的实施实践并找到更有效的解决方案。您只需在 ChatGPT 中输入一个简单的提示即可检查您的代码是否最佳!
#6 - 人工智能驱动的文档
虽然这与您的代码标准没有直接关系,但它在协同工作时无疑发挥了重要作用。
通过 Github 处理项目时,重要的是每个人都在同一页面上。这是因为团队中的每个人都能理解清晰简洁的文档。由于缺乏文档,我无法计算在新代码库中挣扎的次数。
借助人工智能,开发人员能够推出更高质量的文档和用户指南。人工智能工具能够充实任何解释,纠正错别字和错误的句子,并从整体上评估文件的有效性。
我什至从我的一些文档中获得了一些乐趣,创建自定义图像和AI 生成的图标来美化指南。虽然这些并没有立即提高代码质量,但它们肯定在使文档更易于理解方面发挥了作用,从而转化为更易于理解的编程。
人工智能文档编写器
人工智能还如何帮助我?
像那里的许多开发人员和软件工程师一样,我也开始转向远程工作,完全通过 GitHub 和电子邮件工作。在这种情况下,AI 是天赐之物,它可以帮助确保我及时了解所有与编程和非编程相关的任务。
一般来说,AI 可以通过多种方式提高您的工作效率,包括 AI 笔记、作家等。如果您还没有使用 AI 来增强您的工作流程,我强烈建议您开始使用它!
结论
总结一下,这些是 AI 对提高我的代码质量有很大帮助的前 6 种方式。
我真的怎么强调都不为过:在 AI 的支持下编码的差异让我觉得我现在正在完成编程任务。
对于初级程序员,您可以使用它来帮助您学习和接触各种编程实践。但是,我再说一遍:完全复制 AI 生成的代码没有任何价值。将它用作提高和增强您自己的技能的一种手段,但仅此而已。
如果你喜欢我的文章,记得关注获取更多的信息。感谢您的阅读,祝您有美好的一天!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。