用途:在编写或编辑 JavaScript、TypeScript 代码时应用 Metarhia 风格约定,统一格式、命名与性能实践。
准备:在 package.json 的 devDependencies 中加入 eslint-config-metarhia、eslint、prettier;添加脚本 "lint": "eslint . && prettier --check "/.js" "/.json" "**/.md" "/.ts"" 与 "fix": "eslint . --fix && prettier --write "/.js" "/.json" "**/.md" "/.ts""。AI 分析代码前后运行 npm run lint 和 npm t,出现错误或警告时用 npm run fix 自动修复。
格式:单引号与分号;最大行宽 80(忽略 URL);多行数组、对象和参数使用尾随逗号;语义块之间保留一个空行;间距、括号和缩进遵循 Prettier 与 eslint-config-metarhia。
命名:变量和参数用 camelCase,类和类型用 UpperCamelCase,常量用 UPPER_SNAKE_CASE;构造函数用大写并配合 new;catch 块用 error 而非 err;短单行回调可用 e、i,多行回调用描述性名称(event、index、item);布尔值用 is、has、can、should 前缀;实体用单数、集合用复数;函数与处理器用动词(parse、create、handle、on);数值名称包含单位(timeoutMs、sizeBytes)。
最佳实践:优先 const,少用 let,禁用 var;优先箭头函数(原型/类方法除外);不修改输入参数;函数保持小而单一;长表达式拆为中间变量;热路径用显式循环(for、for..of);数组方法在提升可读性时使用;只用 === 和 !==;返回类型保持一致;避免嵌套三元和深层回调;代码自解释,不写显而易见注释;.map、.filter、.reduce 在语义合适时使用;避免 .forEach,除非回调不读取外部上下文。
优化:保持对象形状稳定(相同键、类型和键顺序);仅在构造函数和创建模式中改变形状,避免 mix-in 和 delete;形状变更仅用于元编程;空引用类型用 null,空原始值用 undefined;赋值和循环中避免数组解构,对象解构可以;热函数保持单态(参数数量、类型和返回类型稳定);避免从多个无关对象形状读取同一属性;状态/代码优先用字符串或数字字面量,避免同一变量混用原始值与对象;共享属性的对象保持相同形状,避免多态热点;热路径优先固定属性访问 obj.x 而非动态键 obj[key];数组保持密集,避免空洞和混合元素类型;对象字段在构造函数/工厂中一次性按同一顺序初始化;热路径中用 null 或 undefined 代替 delete;可复用回调移出热循环;try/catch、spread/rest 和 arguments 远离热循环;动态键字典用 Map,固定模式用普通对象;纯字典用 Object.create(null);数值和二进制负载用类型化数组;减少 GC 压力,安全时复用数组、对象和缓冲区。
限制:资料未提供具体版本要求、TypeScript 修正细节及更多平台信息。