首页 > 其他分享 >用AI提高代码质量,同事对我的代码赞不绝口~

用AI提高代码质量,同事对我的代码赞不绝口~

时间:2023-09-12 18:35:22浏览次数:30  
标签:numberStack ch operatorStack AI 代码 赞不绝口 result BigDecimal

在当今软件开发领域,代码质量被视为至关重要的因素,因为它直接影响到软件的可维护性、可扩展性和可靠性。尽管有人担忧AI技术的快速发展可能会取代初级程序员的工作,但我们应该认识到提升自身技能和成长是关键。 在这种情况下,合理的学会使用AI工具或许可以带来某些帮助,作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。 然而,我们也应该意识到依赖AI技术并不能完全替代人类的创造力和判断力。在软件开发过程中,仍然需要人类程序员的综合能力来确保软件的成功实现。因此,我们应该抓住机遇,不断提升自己的技能,以适应不断发展的技术环境。 在现代软件开发中,重视代码质量至关重要。虽然AI技术的发展可能带来一定的挑战,但通过与FuncGPT(慧函数)等先进工具的合作,我们可以更好地应对这些挑战。 今天就来分享一下使用FuncGPT(慧函数)来提升代码质量的2种方法。

1.使用ChatGPT生成代码注释,以提高代码的可读性和可维护性。 代码的可读性很重要,因为代码是人编写和维护的。当代码可读性差的时, 它将很难理解和修改,这将导致代码的可维护性和可扩展性受到影响。特别是大家都是团队合作, 如果代码的可读性很差,必将影响到团队里的其他人,也非常不利于扩展。 而FuncGPT(慧函数)可以自动生成代码,且注释详细,以下是基于写一个java函数BigDecimal的表达式运算的需求,其所生成的代码,大家可以感受一下。

// 类名:BigDecimalCalculator // 函数名:calculateExpression // 函数功能:使用BigDecimal计算表达式的结果 // POM依赖包: // <dependency> // <groupId>org.apache.commons</groupId> // <artifactId>commons-lang3</artifactId> // <version>3.12.0</version> // </dependency>

import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Stack;

public class BigDecimalCalculator { /** * 使用BigDecimal计算表达式的结果 * @param expression 要计算的表达式 * @return 计算结果 */ public static BigDecimal calculateExpression(String expression) { if (StringUtils.isBlank(expression)) { throw new IllegalArgumentException("Expression cannot be blank"); }

    Stack<BigDecimal> numberStack = new Stack<>();
    Stack<Character> operatorStack = new Stack<>();

    for (int i = 0; i < expression.length(); i++) {
        char ch = expression.charAt(i);
        if (Character.isDigit(ch)) {
            StringBuilder sb = new StringBuilder();
            while (i < expression.length() && (Character.isDigit(expression.charAt(i)) || expression.charAt(i) == '.')) {
                sb.append(expression.charAt(i));
                i++;
            }
            i--;

            BigDecimal number = new BigDecimal(sb.toString());
            numberStack.push(number);
        } else if (ch == '(') {
            operatorStack.push(ch);
        } else if (ch == ')') {
            while (!operatorStack.isEmpty() && operatorStack.peek() != '(') {
                BigDecimal result = performOperation(numberStack, operatorStack);
                numberStack.push(result);
            }
            if (!operatorStack.isEmpty() && operatorStack.peek() == '(') {
                operatorStack.pop();
            }
        } else if (isOperator(ch)) {
            while (!operatorStack.isEmpty() && hasHigherPrecedence(ch, operatorStack.peek())) {
                BigDecimal result = performOperation(numberStack, operatorStack);
                numberStack.push(result);
            }
            operatorStack.push(ch);
        }
    }

    while (!operatorStack.isEmpty()) {
        BigDecimal result = performOperation(numberStack, operatorStack);
        numberStack.push(result);
    }

    return numberStack.pop();
}

private static boolean isOperator(char ch) {
    return ch == '+' || ch == '-' || ch == '*' || ch == '/';
}

private static boolean hasHigherPrecedence(char op1, char op2) {
    if ((op1 == '*' || op1 == '/') && (op2 == '+' || op2 == '-')) {
        return true;
    }
    return false;
}

private static BigDecimal performOperation(Stack<BigDecimal> numberStack, Stack<Character> operatorStack) {
    BigDecimal num2 = numberStack.pop();
    BigDecimal num1 = numberStack.pop();
    char operator = operatorStack.pop();

    BigDecimal result;
    switch (operator) {
        case '+':
            result = num1.add(num2);
            break;
        case '-':
            result = num1.subtract(num2);
            break;
        case '*':
            result = num1.multiply(num2);
            break;
        case '/':
            result = num1.divide(num2, 2, RoundingMode.HALF_UP);
            break;
        default:
            throw new IllegalArgumentException("Invalid operator");
    }

    return result;
}

}

// 函数示例 // 使用BigDecimal计算表达式的结果示例 // 入参:expression,要计算的表达式 // 出参:result,计算结果 // 调用示例: // String expression = "2.5 + 3 * (4 - 1)"; // BigDecimal result = BigDecimalCalculator.calculateExpression(expression); // System.out.println(result); // 输出结果:例如,计算表达式"2.5 + 3 * (4 - 1)"的结果为:11.5 // 则输出结果为:11.5 2、使用FuncGPT(慧函数)生成测试用例,以帮助和修复代码中的错误和缺陷 除了改进代码,要提升代码质量,软件测试必不可少,他是用于测试功能和正确性的代码片段,可以帮助开发人员发现和修复代码中的错误和缺陷,通过使用FuncGPT(慧函数)生成测试用例,开发人员可以节省手动编写测试用例的时间。但是,大部分程序员对写测试用例不够重视,这也是程序员需要不断提升的地方。 FuncGPT(慧函数)现已开通免费使用: https://c.suo.nz/d5B3p

标签:numberStack,ch,operatorStack,AI,代码,赞不绝口,result,BigDecimal
From: https://blog.51cto.com/u_15327851/7447162

相关文章

  • 代码混淆和加固,保障应用程序的安全性
    摘要:本文将详细介绍iOS技术博主在保护应用程序代码安全方面的两种重要方式:代码混淆和代码加固。通过代码混淆和加固,博主可以有效防止他人对应用程序进行逆向工程和篡改,提高应用程序的安全性。引言:作为iOS技术博主,保护自己的代码免受不良行为的侵犯是非常重要的。为了确保代码的安......
  • 纯C++代码理解Qt中的信号和槽函数
    槽函数的调用是一个多步骤的过程:1.连接(Connect)首先,通过使用QObject::connect()函数来建立信号和槽之间的连接。QObject::connect(sender,SIGNAL(signalName(args)),receiver,SLOT(slotName(args)));这里的sender和receiver是QObject派生的对象,而signalName和slotName则分......
  • 5、linux命令之`tail`
    目录linux命令之tail1、语法2、参数3、实例linux命令之tail用来打印日志,可以指定后面多少行输出。1、语法tail[参数][文件]2、参数选项说明-f循环读取-q不显示处理信息-v显示详细的处理信息-c<数目>显示的字节数-n<行数>显示文件的尾部n行......
  • 视频监控/安防监控/AI视频分析/边缘计算EasyCVR如何调取登录接口获取token?
    安防视频监控管理平台/视频汇聚/视频云存储平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、AI智能分析等,视频监控智能分析平台EasyCVR融合性强、开放度高、部署轻快,在智慧工地、智慧园区、......
  • 优维低代码实践:菜单
    优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。优维低代码实践连载第17期《菜单》▽在微应用中,通过菜单的配置,可以更方便......
  • 艺术二维码生成器 AI绘画生成艺术二维码 stablediffusion制作二维码教程
    史上最全文档AI绘画stablediffusion资料分享面试题分享点我直达2023最新面试合集链接2023大厂面试题PDF面试题PDF版本java、python面试题项目实战:AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、翻译,GPU......
  • 多场景PAI-Diffusion中文模型家族大升级,12个模型、2个工具全部开源
    作者:段忠杰、刘冰雁、汪诚愚、邹心怡、黄俊概述在过去几年中,随着AI生成内容(AIGeneratedContent,AIGC)的快速发展,StableDiffusion模型在该领域崭露头角。阿里云机器学习PAI团队为推动这一领域的发展,参考了StableDiffusion的模型结构,结合中文语言的特点,通过大量对模型预训练数据的......
  • 安防监控/视频汇聚/云存储/AI智能视频分析平台EasyCVR下级海康设备无法级联是什么原因
    安防视频监控平台/视频集中存储/云存储/磁盘阵列EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。有用户反馈,在使用下级平台的海康设备级联到视频监控Easy......
  • 方案丨如何通过TSINGSEE青犀防溺水AI算法,实现水域的智能监管与风险预警?
    一、方案背景防溺水已经成为青少年的安全教育“必修课”,成为社会各界的安全管理共同责任。尤其是进入夏季后天气逐渐转热,这也是溺水事故的危险期、易发期、高发期。传统预防、管理方法是通过日常宣传演讲溺水危害和人工巡逻管理,存在较多的弊端:1)缺乏有效安全预警设施:当人员靠近危......
  • yarn install error node-sass: Command failed.
    运行yarninstall报错,如下图:运行npminstall也报错,如下图:如果发生上诉的错误,建议优先考虑是node.js的版本问题我的node.js版本是16,卸载16,安装14版本,运行不再报错......