ChatGPTの心:コードリファクタリング

私たちの旅は、コードの解析とバグ修正から始まり、コードスニペットの生成とテストケースの作成を経て、今回は最終章、コードリファクタリングに到達しました。この記事では、ChatGPTがどのようにコードリファクタリングを行うのかを詳しく解説します。

コードリファクタリング

リファクタリングは、コードの外部的な動作を変えずに内部の構造を改善するプロセスであり、これによりコードの可読性が向上し、バグの発見が容易になり、新機能の追加もスムーズに行えるようになります。

ChatGPTを使用してリファクタリングを行うためには、特定のプロンプトを入力する必要があります。ここでは、具体的な例として、ガード節による入れ子条件記述の置き換えやメソッドの抽出といったリファクタリングを行うユースケースを紹介します。

これらの例を通じて、ChatGPTがどのようにしてリファクタリングを支援できるかを理解していただければ幸いです。

以下のソースコードをリファクタリングしてください。どのようなリファクタリングを行ったのかも教えてください。

#プログラミング言語:[リファクタリングしたいプログラミング言語名]

#適用するリファクタリングの種類:[適用したいリファクタリングの種類を指示する。種類を指定しない場合はこの行を削除する。]

#ソースコード:
[リファクタリングするソースコード]

たかよこ

以下のソースコードをリファクタリングしてください。どのようなリファクタリングを行ったのかも教えてください。

#プログラミング言語:JavaScript
#適用するリファクタリングの種類:ガード節による入れ子条件記述の置き換え、メソッドの抽出
#ソースコード:

function keydownSentenceHandler(e) {
	if(e.target.id == "input-sentence") {
		if(e.keyCode === 13 && !e.shiftKey && !e.altKey && !e.ctrlKey) {
			querySelector("#convert-sentence").click();
			e.preventDefault();
			return;
		}
	}
}
Bing AI

以下のようにリファクタリングを行いました。

  1. ガード節による入れ子条件記述の置き換え:このリファクタリングでは、条件が満たされない場合に早期に関数から抜け出すことで、コードのネストを減らし、読みやすさを向上させます。この場合、e.target.id"input-sentence"でない場合や、e.keyCodeが13でない場合、またはe.shiftKeye.altKeye.ctrlKeyのいずれかがtrueの場合に、関数から早期にリターンします。
  2. メソッドの抽出:このリファクタリングでは、コードの一部を新しい関数に切り出すことで、コードの再利用性と可読性を向上させます。この場合、e.keyCode === 13 && !e.shiftKey && !e.altKey && !e.ctrlKeyという条件判定をisEnterKeyWithoutModifierという新しい関数に切り出しました。

リファクタリング後のソースコード:

function isEnterKeyWithoutModifier(e) {
	return e.keyCode === 13 && !e.shiftKey && !e.altKey && !e.ctrlKey;
}

function keydownSentenceHandler(e) {
	if(e.target.id !== "input-sentence") return;
	if(!isEnterKeyWithoutModifier(e)) return;

	document.querySelector("#convert-sentence").click();
	e.preventDefault();
}

このようにリファクタリングすることで、コードの可読性と保守性が向上します。また、新たに追加したisEnterKeyWithoutModifier関数は他の場所でも再利用可能です。これにより、コードの重複を避け、一貫性を保つことができます。このリファクタリングは、コードの品質を向上させるための一般的な手法です。どのようなプログラミング言語を使用していても、これらの原則は有効です。コードの可読性と保守性を向上させるために、これらのリファクタリング手法を積極的に利用することをお勧めします。

これで、ChatGPTのコード解析、生成、そしてリファクタリングの全体像が見えてきたことでしょう。これらの機能は、あなたがより効率的にコードを書き、理解し、改善するのを助けるためのものです。

ChatGPTがあなたのコーディングのパートナーとなり、あなたのプログラミングの旅をより楽しく、より生産的なものにすることを願っています。次回もお楽しみに!

Follow me!

photo by:RyanMcGuire