Maison  >  Article  >  Périphériques technologiques  >  Comment faire en sorte que ChatGPT agisse comme un optimiseur de code Java méticuleux ?

Comment faire en sorte que ChatGPT agisse comme un optimiseur de code Java méticuleux ?

WBOY
WBOYavant
2023-05-04 09:55:06958parcourir

Remarque : Cet article utilise New Bing (GPT4.0) pour la démonstration

1 Laissez-le jouer le rôle d'un développeur de logiciels Java

Étape 1 : Laissez ChatGPT jouer le rôle d'un développeur de logiciels Java.

  • Plug-in de mots d'invite : Adresse : ChatGPT BingChat GPT3 Prompt Generator App (Streamlit) - a Hugging Face Space par Kaludi

Java Software Developer Java Software Developer

I want you to act as a Java software developer.
 I will provide you with a list of commands and you will implement them. 
My first request is "I need help creating a Java application."

Comment faire en sorte que ChatGPT agisse comme un optimiseur de code Java méticuleux ?

2. Ce n'est pas le cas bon de préparer un exemple de code Java

Deuxième étape : nous préparons un exemple de code Java mal écrit

  • Mauvais exemple Java :
public int calculateUsingIfElse(int a, int b, String operator) {
int result = 0;
if (operator.equals("add")) {
result = a + b;
} else if (operator.equals("subtract")) {
result = a - b;
} else if (operator.equals("multiply")) {
result = a * b;
} else if (operator.equals("divide")) {
if (b == 0) {
throw new IllegalArgumentException("Cannot divide by zero");
}
result = a / b;
} else if (operator.equals("modulus")) {
if (b == 0) {
throw new IllegalArgumentException("Cannot divide by zero");
}
result = a % b;
} else if (operator.equals("power")) {
result = (int) Math.pow(a, b);
} else if (operator.equals("square root")) {
if (a < 0) {
throw new IllegalArgumentException("Cannot take square root of negative number");
}
result = (int) Math.sqrt(a);
} else if (operator.equals("absolute value")) {
result = Math.abs(a);
} else if (operator.equals("negate")) {
result = -a;
} else {
throw new IllegalArgumentException("Invalid operator");
}
return result;
}

Comment faire en sorte que ChatGPT agisse comme un optimiseur de code Java méticuleux ?

3. Laissez-le optimiser ce code

Troisième étape : laissez newBing (ChatGPT) optimise ce code

  • et demande de "l'organiser dans une structure de code plus élégante, comme la division automatique des sous-fonctions, la réduction de l'imbrication des if et des boucles, et même la mise en œuvre de certains modèles de conception ".

Comment faire en sorte que ChatGPT agisse comme un optimiseur de code Java méticuleux ?

// 定义一个接口,表示不同的运算策略
public interface OperationStrategy {
int apply(int a, int b);
}


// 定义一个枚举,表示不同的运算符和对应的策略
public enum Operator {
ADD((a, b) -> a + b),
SUBTRACT((a, b) -> a - b),
MULTIPLY((a, b) -> a * b),
DIVIDE((a, b) -> {
if (b == 0) {
throw new ArithmeticException("Cannot divide by zero");
}
return a / b;
}),
MODULUS((a, b) -> {
if (b == 0) {
throw new ArithmeticException("Cannot divide by zero");
}
return a % b;
}),
POWER((a, b) -> (int) Math.pow(a, b)),
SQUARE_ROOT((a, b) -> {
if (a < 0) {
throw new ArithmeticException("Cannot take square root of negative number");
}
return (int) Math.sqrt(a);
}),
ABSOLUTE_VALUE(Math::abs),
NEGATE(a -> -a);


private final OperationStrategy strategy;


Operator(OperationStrategy strategy) {
this.strategy = strategy;
}


public int apply(int a, int b) {
return strategy.apply(a, b);
}
}


// 定义一个方法,根据运算符和操作数来计算结果
public int calculateUsingStrategy(int a, int b, String operatorName) {


 // 根据运算符名称找到对应的枚举常量,如果没有找到则抛出异常
 Operator operator = Operator.valueOf(operatorName.toUpperCase());
 if (operator == null) {
 throw new IllegalArgumentException("Invalid operator");
 }


 // 调用枚举常量的apply方法来执行相应的策略
 return operator.apply(a,b);
}

4. Laissez-le écrire un seul test

Étape 4 : Laissons-le enfin terminer - écrire un seul test

Comment faire en sorte que ChatGPT agisse comme un optimiseur de code Java méticuleux ?

import org.junit.Test;
import static org.junit.Assert.*;


// 定义一个测试类,用@Test注解标记要执行的测试方法
public class CalculatorTest {


// 定义一个测试方法,用assertEquals方法来验证计算结果是否正确
@Test
public void testAdd() {
int result = calculateUsingStrategy(3, 5, "add");
assertEquals(8, result);
}


// 定义其他的测试方法,分别测试不同的运算符和操作数
@Test
public void testSubtract() {
int result = calculateUsingStrategy(10, 4, "subtract");
assertEquals(6, result);
}


@Test
public void testMultiply() {
int result = calculateUsingStrategy(7, 9, "multiply");
assertEquals(63, result);
}


@Test
public void testDivide() {
int result = calculateUsingStrategy(12, 3, "divide");
assertEquals(4, result);
}


 // 定义一个测试方法,用assertThrows方法来验证抛出了预期的异常
 @Test
 public void testDivideByZero() {
 assertThrows(ArithmeticException.class,
 () -> calculateUsingStrategy(10,0,"divide"));
 }


 // 定义其他的测试方法,分别测试不同的异常情况


 @Test
 public void testModulusByZero() {
 assertThrows(ArithmeticException.class,
 () -> calculateUsingStrategy(10,0,"modulus"));
 }


 @Test
 public void testSquareRootOfNegativeNumber() {
 assertThrows(ArithmeticException.class,
 () -> calculateUsingStrategy(-4,-2,"square root"));
 }


 // 定义一个测试方法,用assertThrows方法来验证抛出了预期的异常
 @Test
 public void testInvalidOperator() {
 assertThrows(IllegalArgumentException.class,
 () -> calculateUsingStrategy(10,-2,"foo"));
 }
}

Enfin, la sécurité des données est le plus gros problème, ne publiez pas de données aléatoires. à ChatGPT, en particulier lorsqu'il s'agit de mots de passe de comptes de stockage principaux back-end, de données commerciales de base de l'entreprise, de planification stratégique de base du service, etc. Parce que tout d'abord, ChatGPT utilisera votre corpus de questions et réponses pour la formation ; deuxièmement, vous ne pouvez pas prédire à quel mot d'invite le modèle LLM répondra avec les informations que vous avez divulguées par inadvertance.

Les défauts ne sont pas cachés, le modèle LLM représenté par ChatGPT peut grandement améliorer notre efficacité de développement en agissant en tant que notre professeur omniscient et infatigable rédacteur de code Util général, en particulier dans l'analyse de données, le front-end, les tests uniques, la reconstruction et d'autres domaines.

Comme écrit dans la première étape de l'article, ChatGPT est comme une identité polyvalente, vous pouvez le laisser jouer n'importe quel rôle, et Chaque rôle peut nous aider à atteindre une vie meilleure dans le cadre de ce rôle.

Des utilisations plus intéressantes attendent que tout le monde les découvre.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer