VSCodeのchatGPTプラグインを使ってみる
Zennの記事を参考にVSCodeの機能拡張ChatGPTをインストール。
参考記事:
VSCode内でコードを選択して右クリックで直にChatGPTに命令文が送られる
試しにOptimaise
(最適化)をしてもらった
function Replace(Initial: initalProps[], userProps: initalProps[], deleteUserIds: (Models.userUid | undefined)[]): initalProps[] {
const required = userProps.map(d => d.userId).some(d => deleteUserIds.includes(d));
if (!required) {
return userProps;
}
const displayUids = userProps.filter(d => d.category !== "A").map(d => d.userId);
const nonDisplay = Initial.filter(s => {
return !displayUids.includes(s.userId) && s.category !== "A";
});
const updateDisplay = userProps.map(port => {
if (deleteUserIds.includes(port.userId) && port.category !== "A") {
const replece = nonDisplay.shift() || port;
return { ...replece, active: port.active };
} else {
return { ...port };
}
});
return updateDisplay;
}
Optimaise後
function Replace(
Initial: initalProps[],
userProps: initalProps[],
deleteUserIds: (Models.userUid | undefined)[]
): initalProps[] {
if (!userProps.some(d => deleteUserIds.includes(d.userId))) {
return userProps;
}
const nonDisplay = Initial.filter(
s => !userProps.some(d => d.userId === s.userId) && s.category !== "A"
);
return userProps.map(port => {
if (!deleteUserIds.includes(port.userId) || port.category === "A") {
return { ...port };
}
const replace = nonDisplay.shift() || port;
return { ...replace, active: port.active };
});
}
ChatGPTの解説
In this optimized version, the check for required is combined with the some call, making it more concise.
The displayUids array is not needed, as the some call in the filter method can be used to determine if a userId exists in userProps.
In the map method, the if statement has been reordered to reduce the number of checks required for each iteration.The replece spelling has been corrected to replace.
この最適化されたバージョンでは、requiredのチェックがsomeコールに結合され、より簡潔になっています。
userPropsにuserIdが存在するかどうかは、filterメソッドのsomeコールで判断できるため、displayUids配列は不要になりました。
map メソッドにおいて、if 文の順序を変更し、各反復に必要なチェックの数を減らしました。repleceのスペルがreplaceに修正されました。
Optimiseは勉強になりそう
コードレビューで冗長な記述の指摘が多いので事前に確認できるのはありがたい。
プロンプトのテンプレート集がある