# 任务管理系统重构 TODO > 分支:`dev-refactor` 目标:在**不改变任何现有功能与数据格式**的前提下,把单文件架构重构为模块化、可维护的结构。 > 原则:小步提交,每个阶段完成后跑一遍「回归测试清单」再进入下一阶段。 --- ## 一、现状分析 | 文件 | 行数 | 问题概述 | |------|------|----------| | `src/index.html` | 311 | 内联 onclick、3 份重复的排序下拉、favicon 重复 4 次 | | `src/script.js` | 1788 | 单文件巨石:状态、i18n、渲染、存储、导入导出全部混在一起,约 30 个全局函数 | | `src/styles.css` | 432 | 颜色硬编码、选择器重复定义、存在疑似死代码 | ### 主要问题清单 1. **全局可变状态散落**:`tasks`、`currentLang`、`sortOrders`、`showHiddenCompletedTasks`、`showHiddenTodoTasks`、`currentEditingTaskId`、`pendingImportData`、`idCounter` 共 8 个全局变量,任何函数都能直接改。 2. **内联事件处理**:HTML 和 JS 模板字符串里大量 `onclick="xxx()"`,迫使所有函数必须挂在全局作用域。 3. **成对重复代码**(completed / todo 两套几乎相同的逻辑): - `toggleShowHiddenCompletedTasks` / `toggleShowHiddenTodoTasks`(script.js:1665 / 1728) - `updateShowHiddenCompletedTasksUI` / `updateShowHiddenTodoTasksUI`(script.js:1682 / 1745) - `save/loadShowHiddenCompletedTasks` / `save/loadShowHiddenTodoTasks`(script.js:1708 / 1771) - `renderTasks` 内部对 completed 和 todo 的隐藏任务处理两段几乎一样(script.js:630-667) 4. **HTML 重复**:三列的排序 `