Github Copilot 的使用场景
写注释
例如,在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还可以帮助你编写测试用例。例如,你可以用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
, 等等)。而且它还知道在测试后销毁数据,这样就不会影响下一次的测试。
参考链接
Github Copilot的使用场景 https://tutorials.tinkink.net/zh-hans/vscode/usage-scenarios-of-github-copilot.html