# 代码风格检查清单 ## 检查日期 2026-01-25 ## 检查范围 - `argontheme.js` - 主题核心 JavaScript 文件 ## 代码风格规范 ### 1. 变量声明 ⚠️ #### 规范 - 优先使用 `const` 声明不会重新赋值的变量 - 使用 `let` 声明会重新赋值的变量 - 避免使用 `var`(除非需要函数作用域或全局变量) #### 当前状态 ```javascript // ❌ 需要改进 var translation = {}; var zoomifyInstances = []; var lazyloadObserver = null; var pjaxLoading = false; var headroom = null; // ✅ 推荐写法 const translation = {}; let zoomifyInstances = []; let lazyloadObserver = null; let pjaxLoading = false; let headroom = null; ``` #### 检查结果 - ❌ 发现 20+ 处使用 `var` 声明变量 - 建议:将所有 `var` 改为 `let` 或 `const` --- ### 2. 字符串引号 ⚠️ #### 规范 - 优先使用单引号 `'` - 字符串中包含单引号时使用双引号 `"` - 模板字符串使用反引号 `` ` `` #### 当前状态 ```javascript // ❌ 混用单引号和双引号 let message = "Hello World"; let name = 'John'; // ✅ 推荐写法 let message = 'Hello World'; let name = 'John'; ``` #### 检查结果 - ⚠️ 部分代码混用单引号和双引号 - 建议:统一使用单引号 --- ### 3. 比较运算符 ⚠️ #### 规范 - 使用严格相等 `===` 和 `!==` - 避免使用 `==` 和 `!=` #### 当前状态 ```javascript // ❌ 需要改进 if (value == 0) { } if (text != "") { } // ✅ 推荐写法 if (value === 0) { } if (text !== '') { } ``` #### 检查结果 - ⚠️ 发现 50+ 处使用 `==` 或 `!=` - 建议:全部改为 `===` 或 `!==` --- ### 4. 分号使用 ✅ #### 规范 - 语句末尾必须有分号 `;` #### 当前状态 ```javascript // ✅ 符合规范 let value = 10; function test() { } ``` #### 检查结果 - ✅ 所有语句末尾都有分号 - 符合规范 --- ### 5. 缩进 ✅ #### 规范 - 使用 Tab 缩进 - 保持一致的缩进层级 #### 当前状态 ```javascript // ✅ 符合规范 function test() { if (condition) { doSomething(); } } ``` #### 检查结果 - ✅ 使用 Tab 缩进 - ✅ 缩进层级一致 - 符合规范 --- ### 6. 函数命名 ✅ #### 规范 - 使用 camelCase 命名 - 函数名应该是动词或动词短语 - 布尔值返回函数以 `is`、`has`、`can` 等开头 #### 当前状态 ```javascript // ✅ 符合规范 function setCookie() { } function getCookie() { } function waterflowInit() { } function lazyloadInit() { } ``` #### 检查结果 - ✅ 函数命名符合 camelCase - ✅ 命名清晰明确 - 符合规范 --- ### 7. 变量命名 ✅ #### 规范 - 使用 camelCase 命名 - 常量使用 UPPER_SNAKE_CASE - jQuery 对象以 `$` 开头 #### 当前状态 ```javascript // ✅ 符合规范 let currentCount = 0; const MAX_COUNT = 100; let $element = $('#test'); ``` #### 检查结果 - ✅ 变量命名符合 camelCase - ✅ jQuery 对象以 `$` 开头 - 符合规范 --- ### 8. 注释规范 ⚠️ #### 规范 - 使用 JSDoc 注释函数 - 大区块使用 `// ==========` 分隔 - 小区块使用 `// ----------` 分隔 - 单行注释使用 `//` #### 当前状态 ```javascript // ✅ 区块注释符合规范 // ========================================================================== // 性能优化模块引入 // ========================================================================== // ❌ 缺少 JSDoc 注释 function setCookie(cname, cvalue, exdays) { // 函数实现 } // ✅ 推荐写法 /** * 设置 Cookie * @param {string} cname - Cookie 名称 * @param {string} cvalue - Cookie 值 * @param {number} exdays - 过期天数 * @returns {void} */ function setCookie(cname, cvalue, exdays) { // 函数实现 } ``` #### 检查结果 - ✅ 区块注释符合规范 - ❌ 大部分函数缺少 JSDoc 注释 - 建议:为所有公共函数添加 JSDoc 注释 --- ### 9. 空格使用 ✅ #### 规范 - 关键字后有空格(if, for, while, function 等) - 运算符前后有空格 - 逗号后有空格 - 对象字面量冒号后有空格 #### 当前状态 ```javascript // ✅ 符合规范 if (condition) { } for (let i = 0; i < 10; i++) { } let obj = {key: 'value'}; let arr = [1, 2, 3]; ``` #### 检查结果 - ✅ 空格使用符合规范 - 符合规范 --- ### 10. 代码块 ✅ #### 规范 - 始终使用花括号 `{}` - 左花括号不换行 - 右花括号单独一行 #### 当前状态 ```javascript // ✅ 符合规范 if (condition) { doSomething(); } // ❌ 不推荐 if (condition) doSomething(); ``` #### 检查结果 - ✅ 代码块使用符合规范 - 符合规范 --- ### 11. 错误处理 ✅ #### 规范 - 关键函数使用 try-catch - 记录错误日志 - 提供降级方案 #### 当前状态 ```javascript // ✅ 符合规范 function cleanupZoomifyInstances() { if (zoomifyInstances && zoomifyInstances.length > 0) { zoomifyInstances.forEach(instance => { try { if (instance && typeof instance.destroy === 'function') { instance.destroy(); } } catch(e) { ArgonDebug.warn('Failed to destroy Zoomify instance:', e); } }); } } ``` #### 检查结果 - ✅ 关键函数有错误处理 - ✅ 记录错误日志 - ✅ 提供降级方案 - 符合规范 --- ### 12. 函数长度 ⚠️ #### 规范 - 单个函数不超过 100 行 - 复杂函数应该拆分 #### 当前状态 ```javascript // ⚠️ 部分函数过长 function postComment() { // 200+ 行代码 } ``` #### 检查结果 - ⚠️ 发现 5+ 个函数超过 100 行 - 建议:拆分复杂函数,提取重复代码 --- ### 13. 全局变量 ⚠️ #### 规范 - 尽量减少全局变量 - 使用命名空间封装 - 必要的全局变量添加注释说明 #### 当前状态 ```javascript // ⚠️ 全局变量较多 var argonConfig = {}; var translation = {}; var pjaxLoading = false; var headroom = null; var zoomifyInstances = []; var lazyloadObserver = null; ``` #### 检查结果 - ⚠️ 发现 20+ 个全局变量 - 建议:使用命名空间封装,减少全局变量污染 --- ### 14. 性能优化 ✅ #### 规范 - 使用节流/防抖优化事件 - 使用 requestAnimationFrame 优化动画 - 缓存 DOM 查询结果 #### 当前状态 ```javascript // ✅ 符合规范 const throttledChangeToolbarTransparency = argonEventManager ? argonEventManager.throttle(changeToolbarTransparency, 16) : changeToolbarTransparency; document.addEventListener("scroll", throttledChangeToolbarTransparency, {passive: true}); // ✅ 使用 requestAnimationFrame function loadImageOptimized(img, effect) { requestAnimationFrame(() => { img.src = src; }); } // ✅ 缓存 DOM 查询 let $bannerContainer = $("#banner_container"); let $content = $("#content"); ``` #### 检查结果 - ✅ 使用节流函数优化滚动事件 - ✅ 使用 requestAnimationFrame 优化动画 - ✅ 缓存 DOM 查询结果 - 符合规范 --- ## 总体评分 | 项目 | 状态 | 评分 | |------|------|------| | 变量声明 | ⚠️ 需要改进 | 6/10 | | 字符串引号 | ⚠️ 需要改进 | 7/10 | | 比较运算符 | ⚠️ 需要改进 | 6/10 | | 分号使用 | ✅ 符合规范 | 10/10 | | 缩进 | ✅ 符合规范 | 10/10 | | 函数命名 | ✅ 符合规范 | 10/10 | | 变量命名 | ✅ 符合规范 | 10/10 | | 注释规范 | ⚠️ 需要改进 | 5/10 | | 空格使用 | ✅ 符合规范 | 10/10 | | 代码块 | ✅ 符合规范 | 10/10 | | 错误处理 | ✅ 符合规范 | 9/10 | | 函数长度 | ⚠️ 需要改进 | 7/10 | | 全局变量 | ⚠️ 需要改进 | 6/10 | | 性能优化 | ✅ 符合规范 | 9/10 | **总体评分:8.2/10** --- ## 改进优先级 ### 高优先级 🔴 1. **添加 JSDoc 注释** - 影响:代码可维护性 - 工作量:中等 - 建议:为所有公共函数添加 JSDoc 2. **统一比较运算符** - 影响:代码质量和安全性 - 工作量:小 - 建议:全局替换 `==` 为 `===` 3. **统一变量声明** - 影响:代码现代化 - 工作量:小 - 建议:将 `var` 改为 `let/const` ### 中优先级 🟡 4. **统一字符串引号** - 影响:代码一致性 - 工作量:小 - 建议:统一使用单引号 5. **拆分长函数** - 影响:代码可读性 - 工作量:中等 - 建议:拆分超过 100 行的函数 6. **减少全局变量** - 影响:代码组织性 - 工作量:大 - 建议:使用命名空间封装 ### 低优先级 🟢 7. **代码分割** - 影响:代码组织性 - 工作量:大 - 建议:按功能模块分割文件 --- ## 自动化工具建议 ### ESLint 配置 ```json { "rules": { "no-var": "error", "prefer-const": "error", "eqeqeq": ["error", "always"], "quotes": ["error", "single"], "semi": ["error", "always"], "require-jsdoc": ["warn", { "require": { "FunctionDeclaration": true, "MethodDefinition": true, "ClassDeclaration": true } }] } } ``` ### Prettier 配置 ```json { "useTabs": true, "tabWidth": 4, "semi": true, "singleQuote": true, "trailingComma": "none" } ``` --- ## 检查清单 ### 代码提交前检查 - [ ] 所有新函数都有 JSDoc 注释 - [ ] 使用 `let/const` 而非 `var` - [ ] 使用 `===` 而非 `==` - [ ] 使用单引号而非双引号 - [ ] 语句末尾有分号 - [ ] 使用 Tab 缩进 - [ ] 关键函数有错误处理 - [ ] 性能敏感代码已优化 - [ ] 没有 console.log 调试代码 - [ ] 代码通过 ESLint 检查 ### 代码审查检查 - [ ] 函数命名清晰明确 - [ ] 变量命名符合规范 - [ ] 注释充分且准确 - [ ] 没有重复代码 - [ ] 函数长度合理 - [ ] 全局变量使用合理 - [ ] 错误处理完善 - [ ] 性能优化到位 - [ ] 兼容性考虑周全 - [ ] 安全性没有问题 --- ## 下一步行动 1. ✅ 完成代码风格检查清单 2. 📝 为关键函数添加 JSDoc 注释 3. 🔧 统一代码风格(var → let/const, == → ===) 4. 🧪 配置 ESLint 和 Prettier 5. 📊 运行自动化检查工具 6. 🔍 进行代码审查 7. ✨ 提交代码改进 --- ## 参考资料 - [Argon 主题代码规范](code-style.md) - [JavaScript 代码规范](https://github.com/airbnb/javascript) - [JSDoc 使用指南](https://jsdoc.app/) - [ESLint 规则](https://eslint.org/docs/rules/) - [Prettier 配置](https://prettier.io/docs/en/options.html)