引言

GitHub Copilot、Cursor、Claude Code 等 AI 编程工具已经成为开发者的标配。但很多人只是把它当"智能补全"用,远没有发挥出真正的潜力。

本文基于 GitHub 官方文档和社区最佳实践,总结了 10 个实用技巧,帮你把 AI 编程效率提升 10 倍。

官方资料来源:


技巧 1:写好注释,让 AI 理解你的意图

❌ 不好的做法:

function process(data) {
  // AI 不知道你要做什么
}

✅ 好的做法:

// 从用户数据中提取邮箱地址,验证格式,去重后返回数组
function extractValidEmails(userData) {
  // Copilot 会自动生成完整实现
}

官方建议:

  • 用自然语言描述函数功能
  • 说明输入输出格式
  • 提及边界情况(如空值处理)

技巧 2:提供示例数据

❌ 模糊的需求:

# 解析 API 响应
def parse_response(data):

✅ 带示例的需求:

# 解析 API 响应
# 输入示例: {"users": [{"id": 1, "name": "Alice"}], "total": 100}
# 输出: 返回用户列表和总数
def parse_response(data):
    # AI 会根据示例生成准确的解析代码

技巧 3:利用上下文(Context)

AI 会读取当前文件和相关文件的代码。利用这一点:

场景: 你有一个 User 类,想生成相关的工具函数

// User.ts
export class User {
  constructor(
    public id: string,
    public name: string,
    public email: string,
    public createdAt: Date
  ) {}
}

// UserUtils.ts
// 生成一个函数,从 User 对象创建显示名称(格式:name <email>)
export function formatUserDisplay(user: User): string {
  // AI 会自动引用 User 类的结构
  return `${user.name} <${user.email}>`;
}

官方提示:

  • 打开相关文件,AI 会自动读取上下文
  • 使用 @workspace 让 AI 搜索整个项目

技巧 4:分步骤引导 AI

❌ 一次性要求太多:

// 实现一个完整的用户认证系统,包括注册、登录、JWT、密码加密、邮箱验证

✅ 分步骤实现:

// 步骤 1: 实现密码哈希函数(使用 bcrypt)
async function hashPassword(password: string): Promise<string> {
  // AI 生成
}

// 步骤 2: 实现密码验证函数
async function verifyPassword(password: string, hash: string): Promise<boolean> {
  // AI 生成
}

// 步骤 3: 实现用户注册逻辑
async function registerUser(email: string, password: string) {
  // AI 会结合前面的函数生成
}

技巧 5:使用 Chat 模式进行复杂任务

对于复杂需求,用 Chat 模式(Ctrl+ICmd+I)而不是 inline 补全:

示例对话:

你: 帮我重构这个函数,使用 async/await 替代 Promise 链

AI: [生成重构后的代码]

你: 再加上错误处理和重试逻辑

AI: [在原有基础上添加]

优势:

  • 可以迭代优化
  • AI 会记住上下文
  • 可以要求解释代码

技巧 6:利用测试驱动开发(TDD)

先写测试,让 AI 生成实现:

// 先写测试
describe('calculateDiscount', () => {
  it('should apply 10% discount for orders over $100', () => {
    expect(calculateDiscount(150, 'SAVE10')).toBe(135);
  });

  it('should return original price for invalid coupon', () => {
    expect(calculateDiscount(150, 'INVALID')).toBe(150);
  });
});

// 然后让 AI 生成实现
function calculateDiscount(price: number, coupon: string): number {
  // AI 会根据测试用例生成正确的逻辑
}

技巧 7:使用 Slash Commands

GitHub Copilot Chat 支持多种命令:

  • /explain - 解释选中的代码
  • /fix - 修复 bug
  • /tests - 生成测试用例
  • /doc - 生成文档注释
  • /optimize - 优化性能

示例:

// 选中一段复杂代码,输入 /explain
// AI 会逐行解释代码逻辑

// 选中有 bug 的代码,输入 /fix
// AI 会找出问题并修复

技巧 8:代码审查和重构

场景 1:代码审查

// 选中代码,问 AI:
// "这段代码有什么潜在问题?"

function processData(data) {
  for (var i = 0; i < data.length; i++) {
    setTimeout(() => console.log(data[i]), 1000);
  }
}

// AI 会指出:
// 1. 使用 var 导致闭包问题
// 2. 应该用 let 或箭头函数

场景 2:重构

// 问 AI:"把这个函数重构成更函数式的风格"

// 原代码
function filterAndMap(arr) {
  let result = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] > 10) {
      result.push(arr[i] * 2);
    }
  }
  return result;
}

// AI 重构后
const filterAndMap = (arr) => 
  arr.filter(x => x > 10).map(x => x * 2);

技巧 9:生成样板代码(Boilerplate)

示例 1:Express 路由

// 创建一个 RESTful API 路由,包含 CRUD 操作
// 资源:users
// 字段:id, name, email

// AI 会生成完整的路由代码
router.get('/users', async (req, res) => { /* ... */ });
router.post('/users', async (req, res) => { /* ... */ });
router.put('/users/:id', async (req, res) => { /* ... */ });
router.delete('/users/:id', async (req, res) => { /* ... */ });

示例 2:React 组件

// 创建一个用户列表组件,支持搜索和分页
// 使用 TypeScript 和 React Hooks

interface User {
  id: string;
  name: string;
  email: string;
}

// AI 会生成完整的组件代码
export function UserList() {
  // useState, useEffect, 搜索逻辑, 分页逻辑...
}

技巧 10:学会"否定"和"纠正"

AI 生成的代码不一定完美,学会引导它:

示例:

// AI 第一次生成
function fetchData() {
  return fetch('/api/data').then(res => res.json());
}

// 你:不要用 Promise 链,用 async/await

// AI 修正
async function fetchData() {
  const res = await fetch('/api/data');
  return res.json();
}

// 你:加上错误处理

// AI 再次修正
async function fetchData() {
  try {
    const res = await fetch('/api/data');
    if (!res.ok) throw new Error('Request failed');
    return res.json();
  } catch (error) {
    console.error('Failed to fetch data:', error);
    throw error;
  }
}

进阶技巧:自定义 Prompt 模板

在项目根目录创建 .github/copilot-instructions.md

# 项目编码规范

- 使用 TypeScript strict 模式
- 所有函数必须有 JSDoc 注释
- 错误处理使用 Result<T, E> 类型
- 测试使用 Vitest
- 组件使用函数式风格,避免 class

## 示例

\`\`\`typescript
/**
 * 获取用户信息
 * @param userId - 用户 ID
 * @returns Result<User, Error>
 */
export async function getUser(userId: string): Promise<Result<User, Error>> {
  // ...
}
\`\`\`

AI 会自动遵循这些规范!


常见误区

❌ 误区 1:完全依赖 AI

AI 是助手,不是替代品。你需要:

  • 理解生成的代码
  • 审查潜在的 bug
  • 确保符合项目规范

❌ 误区 2:不给上下文

AI 不是读心术,需要你提供:

  • 清晰的注释
  • 相关的代码文件
  • 具体的需求描述

❌ 误区 3:一次性生成大段代码

分步骤生成,逐步验证,比一次性生成一大段代码更可靠。


工具推荐

1. GitHub Copilot

  • 优势: 官方支持,集成度高
  • 适合: 日常开发,代码补全

2. Cursor

  • 优势: 更强的 Chat 模式,支持 @codebase
  • 适合: 复杂重构,项目级别的修改

3. Claude Code (via API)

  • 优势: 更长的上下文窗口(200K tokens)
  • 适合: 大型项目,需要理解整个代码库

4. Codeium

  • 优势: 免费,支持多种 IDE
  • 适合: 个人开发者,预算有限

实战案例:用 AI 重构遗留代码

场景: 有一个 1000 行的 jQuery 代码,想迁移到 React

步骤:

  1. 理解现有逻辑

    问 AI: "这段 jQuery 代码做了什么?"
    
  2. 拆分功能模块

    问 AI: "把这段代码拆分成独立的功能模块"
    
  3. 逐个转换

    问 AI: "把这个模块转换成 React 组件"
    
  4. 测试验证

    问 AI: "为这个组件生成测试用例"
    

总结

AI 编程工具的核心是 人机协作

  • 你负责: 需求分析、架构设计、代码审查
  • AI 负责: 样板代码、重复劳动、语法细节

掌握这 10 个技巧,你的编程效率至少提升 3 倍!

参考资料:


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐