翻倍代码编写速度的关键在于将重复决策自动化。使用Copilot生成整块逻辑、配置VS Code代码片段、优化ESLint/Prettier协作,能显著减少查文档、重写、类型错误等耗时操作。

想提升编码效率?真正的瓶颈往往不是手速。反复查阅文档、重写相似的逻辑、在IDE里四处寻找函数、以及修复那些本可以避免的类型错误,这些才是拖慢进度的元凶。实现效率翻倍的核心,其实在于一个思维转换:将那些需要反复做出的「重复决策」,转化为可以「自动执行」的流程。
用 vscode + TabNine 或 GitHub Copilot 补全整行/整块逻辑,而不是只补变量名
很多开发者安装了Copilot,却只让它补全函数名或参数,这相当于只发挥了它20%的潜力。它真正节省时间的能力,在于根据注释或上下文,直接生成完整的语句块。
- 尝试在代码中写反赌释
// fetch user by id and log error if not found,然后按下Ctrl+Enter(Copilot的默认快捷键),它有很大概率会直接生成一个包含try/catch和console.error的完整API调用代码。 - 在React组件中输入
useMemo(() => {,接着补充注释// filter active items,再触发补全,它常常能推断出类似items.filter(item => item.active)这样的表达式。 - 记住,不要总是接受第一个建议。使用
Alt+[或Alt+]快捷键在多个候选建议间切换,选择最贴合当前数据结构和命名风格的那一条。 - 建议在设置中禁用「自动插入」模式(关闭
editor.suggest.insertMode),改为手动确认每一条补全,这样可以有效避免将data.map误补为data.forEach这类错误。
把高频操作录成 VS Code 用户代码段(snippets),而非依赖记忆
那些每周至少需要手敲五次的代码模式——比如 useEffect 的清理函数、axios 的请求封装、或是 zod 的schema定义——不应该依赖记忆和重复劳动。VS Code的用户代码片段功能支持变量占位符和光标顺序跳转,比任何外部模板插件都更轻量、可靠。
- 打开用户代码片段文件(通过命令
code --open-user-snippets,然后选择ja vascript.json或typescriptreact.json),添加如下配置:
"zod object": {
"prefix": "zodobj",
"body": ["z.object({", " $1: z.$2(),", " $3: z.$4(),", "})"]
}
- 使用时,只需输入
zodobj并按下Tab键,光标便会依次定位到$1(字段名)、$2(类型如string或number)等占位符,无需中断思路去处理引号和逗号这些琐碎细节。 - 需要注意的是,不要在单个snippet中塞入过多嵌套逻辑。例如,“生成一个带loading/error状态的React Query hook”这种复杂功能,应该拆解为
useQuery基础snippet和单独的useQueryStatesnippet,组合使用会更加灵活。 - 在JSX中使用包含
{}大括号的snippet时要谨慎,因为VS Code对JSX内大括号的解析有时不太稳定,可能导致光标定位错乱。
用 eslint + prettier + sa ve without format 配合,让格式化不打断编码流
无论是手动触发格式化,还是在保存文件时因格式化导致超过1秒的卡顿,都会无情地打断编码的思维流。问题的关键不在于工具本身,而在于触发的时机和配置的粒度。
- 关闭VS Code的
editor.formatOnSa ve设置。转而使用editor.codeActionsOnSa ve,将其配置为仅在保存时运行source.fixAll.eslint操作。ESLint的自动修复通常比Prettier更快,并且只修复其规则覆盖的问题(如分号、引号、未使用变量等)。 - 将
prettier的格式化操作推迟到提交代码前,通过Husky和lint-staged钩子来执行,从而避免在编辑过程中产生干扰。 - 在
.eslintrc.cjs配置文件中,显式关闭那些与Prettier规则冲突的ESLint规则,例如:"no-mixed-spaces-and-tabs": "off"、"quotes": "off"。否则,ESLint可能会报告错误却又无法自动修复,造成困扰。 - 如果团队统一使用Prettier,在本地开发时,对于需要临时跳过的某行代码,可以添加
// eslint-disable-next-line prettier/prettier注释,这比等待整个文件格式化完成要快得多。
说到底,真正阻碍编码速度的,往往不是语法不熟,而是那些需要反复斟酌的微观决策:“这里该用 map 还是 forEach?”、“这个API返回的是Promise还是直接值?”、“useState 初始化该用 null 还是 undefined?”。将这些决策点收拢并交由工具链自动化处理,其效果远比练习十小时的盲打要显著得多。
