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

09/12 17:56

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 '+':

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（慧函数）现已开通免费使用： https://c.suo.nz/ckYxW

0 评论
0 收藏
0