Github Copilot的使用场景
Copilot(https://copilot.github.com/)是Github提供的一个人工智能编码辅助工具,在编码过程中提供基于人工智能学习的编码建议。在很多情况下,Copilot可以只用注释或函数名就能实例化出完整的代码。
但是你知道吗,你可以在更多的使用场景中使用Copilot?Copilot还可以补充测试用例、注释、文档、数字序列,甚至是翻译。在这篇文章中,我们将介绍Copilot的更多使用场景。
如果你想了解Copilot的基础,请参考[如何使用Github Copilot和快捷键](/zh-hans/vscode/copilot-usage-and-shortcut.html)。
解决算法问题
Copilot可以帮助你解决算法问题。例如,你可以用Copilot来解决寻找数组最大值的问题。
以JavaScript为例,你可以在VSCode中写下以下文字。
// 使用快速排序对数组进行排序
然后等待Copilot建议代码,然后按Tab
接受建议,你会得到以下代码。
// 使用快速排序对数组进行排序
const quickSort = (arr) => {
if (arr.length <= 1) {
返回 arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
如果你把注释改为//使用冒泡排序对数组进行排序
,你会得到以下代码。
// 使用bubble sort对数组进行排序
const bubbleSort = (arr) => {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
};
哇,Copilot可以为你解决算法问题!
编写测试用例
Copilot还可以帮助你编写测试用例。例如,你可以用Copilot为上一节中的quickSort
函数编写测试用例。
以JavaScript为例,你可以在VSCode中写下以下文字。
// 测试 quickSort
test('quickSort', () => {
然后等待Copilot建议代码,然后按Tab
接受建议,你会得到以下代码。
// 测试 quickSort
test('quickSort', () => {
expect(quickSort([1, 2, 3, 4, 5]).toEqual([1, 2, 3, 4, 5])。
expect(quickSort([5, 4, 3, 2, 1]).toEqual([1, 2, 3, 4, 5])。
expect(quickSort([1, 3, 2, 5, 4]).toEqual([1, 2, 3, 4, 5])。
});
举个更复杂的例子,假设你有一个叫做UserService
的服务,它有一个叫做getUserInfo
的方法来获取用户信息,还有一个叫做setUserInfo
的方法来设置用户信息。你可以在VSCode中写下以下文字。
// 测试
const userService = new UserService();
const userInfo = userService.getUserInfo();
userInfo.setUserInfo('name', 'testName');
然后等待Copilot建议代码,然后按Tab
接受建议,你将得到以下代码。
// 测试
const userService = new UserService();
const userInfo = userService.getUserInfo();
userInfo.setUserInfo('name', 'testName')。
expect(userService.getUserInfo()).toEqual({
name: 'testName',
});
看,Copilot知道你想测试setUserInfo
方法,它将自动为你生成测试代码。
如果你用它来编写更多的测试用例,你会发现Copilot足够聪明,可以为你编写测试用例。它知道你想测试什么,它将自动为你生成测试代码。如果你多次测试一个方法,Copilot甚至会为你命名变量属性(userInfo2
, userInfo3
, 等等)。而且它还知道在测试后销毁数据,这样就不会影响下一次的测试。
写注释
Copilot还可以帮助你写注释。例如,你可以用Copilot为上一节中的 quickSort
函数写注释。
以JavaScript为例,你可以在VSCode中写下以下文字。
const quickSort = (arr) => {
if (arr.length <= 1) {
return arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
然后你在quickSort
函数的上面一行写上以/**
开头的注释,等待Copilot建议代码,然后按Tab
接受建议,你会得到以下代码。
/**
*使用快速排序对数组进行排序
*/
const quickSort = (arr) => {
if (arr.length <= 1) {
return arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
然后你可以像这样完成quickSort
函数的参数和返回值。
/**
* 使用快速排序对数组进行排序
* @param
*/
然后等待Copilot建议代码,然后按Tab
接受建议,你将得到以下代码。
/**
* 使用快速排序对数组进行排序
* @param {number[]} arr
* @returns {number[]}
*/
看,Copilot知道你想为quickSort
函数写一个注释,它会自动为你生成注释,还知道如何履行quickSort
函数的参数和返回值。
数字序列
Copilot还可以帮助你编写数字序列。例如,你可以用Copilot生成一个从1到100的数组。
以JavaScript为例,你可以在VSCode中写下以下文字。
// 从1到100的数字数组
const arr = [1, 2,
然后等待Copilot建议代码,然后按Tab
接受建议,你会得到以下代码。
//从1到100的数字数组
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50。51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100];
你也可以生成一个从100到1的数字数组或其他东西。
// 从100到1的数字数组
const arr = [100, 99,
// 从1到100的奇数数组
const arr = [1, 3,
词典
Copilot也可以作为词典使用。例如,你可以用Copilot查询"test"这个词的含义。
你可以在VSCode中写下以下文字。
//解释一下test这个词
测试:为了
然后等待Copilot建议代码,然后按Tab
接受建议,你将得到以下代码。
// 解释一下测试这个词
测试:为了检查某物是否符合要求,或为了证明某事是否正确而进行的一系列操作。
你可以添加更多的词来查询。
// 解释这些词
测试:为了检查某物是否符合要求,或为了证明某事是否正确而进行的一系列操作。
算法:
编程:
LGTM:
然后等待Copilot建议代码,然后按Tab
接受建议,你将得到以下代码。
//解释一下这些词
测试:为了确定准确性、可靠性或质量而进行的一系列行动、事件等。
算法:解决问题的一种方法或步骤。
编程:用计算机语言编写的程序。
LGTM:看起来不错。
翻译
Copilot还可以帮助你进行翻译。例如,你可以用Copilot将以下文字从英文翻译成中文。
English: Hello, I am Copilot, I can help you write code.
Chinese:
然后等待Copilot建议代码,然后按Tab
接受建议,你会得到以下代码。
English: Hello, I am Copilot, I can help you write code.
Chinese: 你好,我是 Copilot,我可以帮助你写代码。
你可以添加更多的语言来翻译。
English: Hello, I am Copilot, I can help you write code.
Chinese: 你好,我是 Copilot,我可以帮助你写代码。
Traditional Chinese:
Japanese:
然后等待Copilot建议代码,然后按Tab
接受建议,你会得到以下代码。
English: Hello, I am Copilot, I can help you write code.
Chinese: 你好,我是 Copilot,我可以帮助你写代码。
Traditional Chinese: 你好,我是 Copilot,我可以幫助你寫代碼。
Japanese: こんにちは、私は Copilot です。私はあなたがコードを書くのを手伝うことができます。
总结
在这篇文章中,我为你介绍了Copilot的更多使用场景。当你写代码时,Copilot可以提供很多帮助。它还可以帮助你写文档,写测试用例,写注释,生成数字序列,以及翻译。它是非常有用的。我希望你能喜欢它。