🏷️命名规范
- 变量缩写必须得到团队认可,否则使用完整单词
- 常量全大写,单词间用下划线分隔,语义完整清晰
- 函数命名用
动词 + 名词,如sendSms;模板/JSX 中用handle + 名词 + 动词,如handleSmsSend - 善用
for、by、from、when、then等词表达函数意图
在 Code Review 新同学的代码时,有很多知识和细节需要反复解释。这份清单用于提交前自检,也用于 Review 时对齐标准。
下面的 review 报告由已安装的 Skill 对真实坏代码执行产出。这里放一个最有代表性的案例,完整案例库见独立页面。
动词 + 名词,如 sendSms;模板/JSX 中用 handle + 名词 + 动词,如 handleSmsSendfor、by、from、when、then 等词表达函数意图false、0、'' 是否与 null、undefined 语义相同any,合理定义类型和接口interface 描述对象结构,type 用于联合类型等复合场景anyif、else、for、while、do、switch、try、catch、finally 的执行体无论多少行都加 { }<= 和 <some、every、find(注意空数组时 some 返回 false,every 返回 true)resolve 或 reject 进入下一状态,避免卡死setTimeout 解决异步问题,这会制造难以复现的 bugforEach,而不是 mapMath.random()、Date.now())key 使用稳定唯一 id,不用数组下标或随机值useEffect / watch 的依赖项必须完整,避免闭包捕获过期值Object、Map 或 Set 优化font-display 策略,避免 FOIT/CLSdefer/async/idle),不阻塞首屏dangerouslySetInnerHTML / v-html 仅用于可信来源,且内容需先经过消毒target="_blank" 必须配 rel="noopener noreferrer",防止反向 tabnabbingX-Frame-Options 或 CSP frame-ancestors 防点击劫持npm audit)aria-labelalt 属性labelaria-live)const,直到变量需要改变时再用 letpackage.json 依赖项建议锁定版本号,避免使用 ^ ~.env 等含敏感变量的文件不入库,改由 .env.example 声明所需字段browserslist、targets)中同步'IntersectionObserver' in window),不要做 UA 嗅探:has、容器查询、color-mix 等)时考虑降级