问题概述
经过代码审查,发现该项目存在严重的 YAGNI (You Aren't Gonna Need It) 原则违反。项目在没有任何实际源代码的情况下,已经配置了大量未来可能需要的依赖和基础设施。
具体问题
1. 过早声明的依赖 (package.json)
文件: package.json:17-32
当前代码:
"devDependencies": {
"@electron-forge/cli": "^7.0.0",
"@electron-forge/maker-deb": "^7.0.0",
"@electron-forge/maker-rpm": "^7.0.0",
"@electron-forge/maker-squirrel": "^7.0.0",
"@electron-forge/maker-zip": "^7.0.0",
"@electron-forge/plugin-auto-unpack-natives": "^7.0.0",
"@electron-forge/plugin-fuses": "^7.0.0",
"electron": "^28.0.0"
},
"dependencies": {
"three": "^0.160.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"@react-three/fiber": "^8.15.0"
}
问题:
- 声明了 5 个不同平台的打包工具 (deb, rpm, squirrel, zip) 但项目没有任何代码需要打包
- 声明了完整的 Electron Forge 插件体系,但 src/ 目录不存在
- 依赖了 React 和 Three.js 但没有任何组件或 3D 场景代码
改进建议:
// 初始阶段只保留核心依赖
"devDependencies": {
"electron": "^28.0.0"
},
"dependencies": {
"three": "^0.160.0"
}
2. 虚假的入口点配置
文件: package.json:5
当前代码:
"main": "src/main/main.js",
问题:
- 配置的入口文件
src/main/main.js 不存在
- 整个
src/ 目录都不存在
- 运行
npm start 必然失败
改进建议:
先创建基础的项目结构:
src/
├── main/
│ └── main.js # Electron 主进程入口
├── renderer/
│ ├── index.html # 渲染页面
│ └── app.js # 渲染进程逻辑
3. 未实现功能的文档承诺
文件: README.md:8-14, 58-66
当前文档声明的功能:
- ✅ 3D Molecular Visualization
- ✅ Atom Editing
- ✅ Multiple Formats (XYZ, PDB, CIF)
- ✅ Cross-Platform
实际情况:
- 没有任何解析 XYZ/PDB/CIF 格式的代码
- 没有任何原子编辑功能的代码
- 甚至连基础的 3D 渲染代码都不存在
问题: README 文档给用户造成产品已完成的假象,实际只是一个空壳项目。
改进建议:
## 当前状态 ⚠️
**本项目处于早期开发阶段,以下功能尚未实现:**
- [ ] 3D Molecular Visualization - 计划使用 Three.js
- [ ] File format support - 计划支持 XYZ, PDB
- [ ] Atom editing - 开发中
4. 过度设计的 CI/CD 流程
文件: .github/workflows/deploy.yml:28-38
当前代码:
- name: Build
run: npm run make || npm run build || echo "No build script"
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
if: github.ref == 'refs/heads/main'
with:
path: ./out
- name: Deploy to GitHub Pages
uses: actions/deploy-pages@v4
问题:
- CI 流程尝试构建和部署一个不存在的应用
- 使用
|| echo "No build script" 来掩盖没有构建脚本的事实
- 尝试部署到 GitHub Pages 但这是一个桌面 Electron 应用,不应部署到 Pages
改进建议:
在项目有实际代码之前,简化 CI 为基本的代码检查:
- name: Lint check
run: npm run lint || echo "No lint configured"
- name: Test
run: npm test || echo "No tests yet"
为什么重要
技术债务风险
- 依赖膨胀: 未使用的依赖会增加安装时间、安全风险和维护成本
- 构建失败: 用户 clone 后无法运行,体验极差
- 文档与代码脱节: 导致贡献者和用户困惑
维护成本
| 项目 |
当前状态 |
建议状态 |
| 依赖数量 |
11 个 |
2 个 (核心) |
| CI/CD 复杂度 |
高 |
低 |
| 文档准确性 |
虚假承诺 |
诚实描述 |
优先级
建议的修复步骤
- 立即修复: 创建
src/main/main.js 基础文件,使项目可运行
- 简化依赖: 只保留 electron 和 three 核心依赖
- 诚实文档: 更新 README 反映实际开发状态
- 按需添加: 当功能实际需要时再添加相应依赖
本 Issue 基于 YAGNI 原则审查,建议遵循渐进式开发,避免过早优化。
问题概述
经过代码审查,发现该项目存在严重的 YAGNI (You Aren't Gonna Need It) 原则违反。项目在没有任何实际源代码的情况下,已经配置了大量未来可能需要的依赖和基础设施。
具体问题
1. 过早声明的依赖 (package.json)
文件:
package.json:17-32当前代码:
问题:
改进建议:
2. 虚假的入口点配置
文件:
package.json:5当前代码:
问题:
src/main/main.js不存在src/目录都不存在npm start必然失败改进建议:
先创建基础的项目结构:
3. 未实现功能的文档承诺
文件:
README.md:8-14, 58-66当前文档声明的功能:
实际情况:
问题: README 文档给用户造成产品已完成的假象,实际只是一个空壳项目。
改进建议:
4. 过度设计的 CI/CD 流程
文件:
.github/workflows/deploy.yml:28-38当前代码:
问题:
|| echo "No build script"来掩盖没有构建脚本的事实改进建议:
在项目有实际代码之前,简化 CI 为基本的代码检查:
为什么重要
技术债务风险
维护成本
优先级
建议的修复步骤
src/main/main.js基础文件,使项目可运行本 Issue 基于 YAGNI 原则审查,建议遵循渐进式开发,避免过早优化。