ホームページ  >  記事  >  テクノロジー周辺機器  >  ChatGPT を細心の Java コード オプティマイザーとして機能させるにはどうすればよいでしょうか?

ChatGPT を細心の Java コード オプティマイザーとして機能させるにはどうすればよいでしょうか?

WBOY
WBOY転載
2023-05-04 09:55:06920ブラウズ

注: この記事では、

#1 をデモンストレーションするために New Bing (GPT4.0) を使用します。彼に Java ソフトウェア開発者を演じてもらいます

ステップ 1: ChatGPT に Java ソフトウェア開発者の役割を果たしてもらいます

  • プロンプト ワード プラグイン: アドレス: ChatGPT BingChat GPT3 プロンプト ジェネレーター アプリ (Streamlit) - a Kaludi による Hugging Face Space

#Java ソフトウェア開発者 Java ソフトウェア開発者

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."

ChatGPT を細心の Java コード オプティマイザーとして機能させるにはどうすればよいでしょうか?

2.良い Java コードの例

ステップ 2: 不適切に書かれた Java コードの例を準備します

  • 悪い 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;
    }

ChatGPT を細心の Java コード オプティマイザーとして機能させるにはどうすればよいでしょうか?#3. このコードを最適化してもらいます

ステップ 3: newBing (ChatGPT) にこのコードを最適化してもらいます

    そして、「整理」が必要ですサブ関数の自動分割、if ループとループのネストの削減、一部の設計パターンの実装など、より洗練されたコード構造に変換できます。」
  • // 定义一个接口,表示不同的运算策略
    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. 単一のテストを作成してもらいます4 番目のステップ: 最後に、彼に完了を依頼します - 単一のテストを作成してテストしてください

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"));
 }
}
ChatGPT を細心の Java コード オプティマイザーとして機能させるにはどうすればよいでしょうか?最後に、データ セキュリティが最大の問題です。特にバックエンドのコア ストレージ アカウントのパスワード、会社のコア ビジネス データ、および部門が関係する場合は、無差別にデータを ChatGPT に投稿しないでください。 、など。なぜなら、第一に、ChatGPT はトレーニングに質問と回答のコーパスを使用するためであり、第二に、LLM モデルがうっかり漏洩した情報でどのようなプロンプト ワードに応答するかを予測できないからです。

その欠陥にもかかわらず、ChatGPT で表される LLM モデルは、特にデータ分析、フロントエンド、単体テスト、再構築、その他の分野。

ChatGPT を細心の Java コード オプティマイザーとして機能させるにはどうすればよいでしょうか? この記事の最初のステップで述べたように、ChatGPT は多用途のアイデンティティのようなもので、彼に任意の役割を果たさせることができ、

すべての役割を果たせるようになります。この役割は、私たちがより良い生活を達成できるよう支援することにあります。

もっと興味深い使い方が皆さんに発見されるのを待っています。

以上がChatGPT を細心の Java コード オプティマイザーとして機能させるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。