Skip to content

[Quality] YAGNI 原则: 项目存在过早优化与过度设计 #25

Description

@newtontech

问题概述

经过代码审查,发现该项目存在严重的 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"

为什么重要

技术债务风险

  1. 依赖膨胀: 未使用的依赖会增加安装时间、安全风险和维护成本
  2. 构建失败: 用户 clone 后无法运行,体验极差
  3. 文档与代码脱节: 导致贡献者和用户困惑

维护成本

项目 当前状态 建议状态
依赖数量 11 个 2 个 (核心)
CI/CD 复杂度
文档准确性 虚假承诺 诚实描述

优先级

  • - 项目无法运行,入口文件不存在
  • - 代码质量
  • - 改进建议

建议的修复步骤

  1. 立即修复: 创建 src/main/main.js 基础文件,使项目可运行
  2. 简化依赖: 只保留 electron 和 three 核心依赖
  3. 诚实文档: 更新 README 反映实际开发状态
  4. 按需添加: 当功能实际需要时再添加相应依赖

本 Issue 基于 YAGNI 原则审查,建议遵循渐进式开发,避免过早优化。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions