# create-dir-structure **Repository Path**: oneonly/create-dir-structure ## Basic Information - **Project Name**: create-dir-structure - **Description**: 本项目为全栈程序员提供一套**标准化的目录结构体系**,覆盖工作、学习、生活三大场景,让文件管理告别混乱,实现"秒级定位"。 配套 python 脚本可**一键生成**完整目录树,无需手动创建。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-23 - **Last Updated**: 2026-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 全栈程序员标准化目录结构体系生成脚本 ## 项目简介 本项目为全栈程序员提供一套**标准化的目录结构体系**,覆盖工作、学习、生活三大场景,让文件管理告别混乱,实现"秒级定位"。 配套 `create-structure.py` 脚本可**一键生成**完整目录树,无需手动创建。 ## 目录结构总览 ``` #规范命名/ ← 根目录(脚本所在目录) ├── 01-工作/ ← 工作与项目相关 │ ├── 01-项目源码/ 代码仓库(工作项目/个人项目/外包私活) │ ├── 02-技术文档/ 架构设计、API文档、数据库设计、踩坑记录等 │ ├── 03-工具脚本/ Shell脚本、Python脚本、IDE配置 │ ├── 04-面试与职业/ 简历、面试复盘、题库、作品集 │ ├── 05-合同与协议/ 劳动合同、保密协议、外包合同 │ ├── 06-财务与报销/ 工资条、报销票据、五险一金 │ ├── 07-会议与沟通/ 会议纪要、需求评审、述职报告 │ ├── 08-资源素材/ 图标、字体、模板、设计稿 │ └── 09-软件资源/ 开发工具安装包、数据库工具、编辑器 │ ├── 02-学习/ ← 学习与自我提升 │ ├── 01-前端/ HTML/CSS、JS、TS、React、Vue、构建工具 │ ├── 02-后端/ Node.js、Java、Python、Go、API设计 │ ├── 03-数据库/ MySQL、Redis、MongoDB、消息队列 │ ├── 04-DevOps/ Docker、K8s、CI-CD、Linux、Git、Nginx │ ├── 05-项目实战/ 前端项目、后端项目、全栈项目 │ ├── 06-计算机基础/ 数据结构与算法、网络、操作系统、设计模式 │ ├── 07-系统设计/ 高并发、分布式、微服务、案例分析 │ ├── 08-安全/ Web安全、加密算法 │ ├── 09-前沿技术/ AI与大模型、WebAssembly、低代码 │ ├── 10-读书笔记/ 技术书籍、非技术书籍、论文 │ ├── 11-课程视频/ 已购课程、技术演讲、教程 │ ├── 12-认证考试/ 软考、AWS认证、PMP │ ├── 13-英语技术/ 技术词汇、文档阅读、口语 │ ├── 14-开源贡献/ Fork项目、PR记录、Issue讨论 │ └── 15-博客输出/ 已发布文章、草稿、素材图床 │ ├── 03-生活/ ← 个人生活 │ ├── 01-证件证书/ 身份证、户口本、护照、学历学位 │ ├── 02-合同/ 房产、租房、购车、保险 │ ├── 03-照片视频/ │ ├── 04-音乐影视/ 电影清单、剧集、音乐、播客 │ ├── 05-账号密码/ │ └── 06-游戏/ Steam、Epic、单机游戏、模拟器 │ ├── 04-家人朋友/ ← 家人与亲友 │ ├── 01-父母/ 证件、医疗、纪念 │ ├── 02-配偶/ 证件、纪念 │ ├── 03-子女/ 证件、教育、成长照片 │ ├── 04-通讯录/ │ └── 05-重要纪念/ 婚礼、生日 │ ├── 05-归档/ ← 历史归档 │ ├── 01-前公司/ │ ├── 02-旧项目/ 已下线项目、废弃方案 │ ├── 03-过期文档/ 旧合同、旧证件 │ └── 04-系统备份/ 数据库备份、配置文件、SSH密钥 │ ├── 06-临时/ ← 临时中转 │ ├── 01-下载/ │ ├── 02-解压/ │ ├── 03-截图/ │ ├── 04-草稿/ │ └── 05-中转/ │ ├── Sync/ ← 跨设备同步 │ ├── 01-工作同步/ │ ├── 02-学习同步/ │ ├── 03-生活同步/ │ └── 04-密码同步/ │ ├── create-structure.py ← 一键生成脚本 └── readme.md ← 本文档 ``` ## 自动创建脚本 ### 功能说明 `create-structure.py` 是一个纯 Python 脚本,**零依赖**(仅使用标准库 `pathlib`),功能如下: | 功能 | 说明 | | -------- | ------------------------------------------------------------ | | 一键生成 | 运行即创建上述全部目录结构 | | 幂等安全 | 已有目录不会重复创建,已有文件不会覆盖 | | 便携部署 | 脚本放到哪,目录就在哪生成(`BASE = Path(__file__).parent`) | | 模板机制 | 项目目录内置 `_新建项目结构模板_`,复制后重命名即可复用 | ### 使用方法 ```bash # 1. 将脚本放到目标目录(如 N:\#规范命名\) # 2. 在该目录下运行: python create-structure.py # 或者直接在脚本所在目录运行: cd N:\#规范命名 python create-structure.py ``` 运行后输出: ``` ======================================== 全部文件夹结构创建完毕! 位置: N:\#规范命名 ======================================== ``` ## 文件命名参考说明指南 ## 一、目录命名规范 ### 1.1 层级分类前缀 本体系采用 **数字前缀 + 中文名称** 的层级分类法,确保目录按逻辑顺序排列: ``` 格式:数字前缀-分类名称 示例:01-工作、02-学习、03-生活 ``` | 规则 | 说明 | 示例 | | ---------- | ------------- | ------------------------------------------- | | 一级分类 | `0X-大类名称` | `01-工作`、`02-学习`、`03-生活` | | 二级分类 | `0X-子类名称` | `01-项目源码`、`02-技术文档`、`09-软件资源` | | 三级分类 | 直接描述 | `架构设计`、`API文档`、`开发工具` | | 四级及以下 | 具体领域/技术 | `JavaScript`、`Docker`、`Git` | ### 1.2 英文技术名词 技术专有名词保留原始大小写,使用 **kebab-case**(短横线连接): ``` ✅ 正确:VS-Code、Spring-Boot、CI-CD、React-Native、GitHub-Actions ❌ 错误:vs_code、SpringBoot、ci-cd、react_native、github actions ``` ### 1.3 中英文混用 中英文之间用连字符 `-` 连接,保持可读性: ``` ✅ 正确:01-前端/HTML-CSS/CSS布局 ✅ 正确:04-DevOps/Docker/Dockerfile ✅ 正确:05-计算机基础/数据结构与算法/LeetCode/数组 ``` ### 1.4 项目目录命名规范 每个具体项目以 **时间-归属-名称** 三层结构命名,统一放在所属分类下: ``` 格式:YYYY-公司/客户简称-项目名 ``` | 分类 | 命名示例 | 说明 | | -------- | ------------------------ | ------------------------ | | 工作项目 | `2026-腾讯-数据中台` | 年份 + 公司简称 + 项目名 | | 工作项目 | `2025-阿里-双11大促` | 大项目可按活动命名 | | 个人项目 | `2026-个人博客系统` | 个人项目用"个人"标识 | | 个人项目 | `2025-开源工具X` | 开源项目用工具名 | | 外包私活 | `2026-客户A-商城系统` | 客户简称 + 项目名 | | 外包私活 | `2026-某科技-小程序开发` | 私活按客户命名 | **项目内部结构**(每个项目目录下包含,数字前缀仅用于顶层分类,项目内部不加编号以保持灵活): ``` 2026-公司A-项目B/ ├── 需求/ ← PRD、原型、评审、变更记录 ├── 设计/ ← 架构图、时序图、ER图、接口文档、技术选型 ├── 开发/ ← 开发日志、CodeReview、技术攻坚、联调记录 ├── 测试/ ← 测试用例、测试报告、Bug跟踪、压测报告 ├── 发布/ ← 发布检查清单、Changelog、回滚预案、灰度记录 ├── 运维/ ← 监控告警、故障复盘、性能报告、数据备份 ├── 复盘/ ← 复盘会议纪要、经验教训总结 ├── 项目文档/ ← 项目专属:架构设计、接口文档、数据库设计、部署文档 └── 合同与协议/ ← 外包私活专用:合同、保密协议、结算记录 ``` > **为什么项目内部不用数字前缀?** 实际项目中经常需要插入新阶段(如 `安全审查/`、`UAT验收/`、`数据迁移/`),`01-02-03` 连续编号会导致插入困难。顶层大类(`01-工作`、`02-学习`)几乎不变,保留数字前缀;项目内部灵活命名,自由增删。 > **文档归属原则**:项目专属的技术文档(架构设计、接口文档、数据库设计、部署文档)跟随项目存放在 `项目文档/` 下;跨项目通用的规范、踩坑记录、周报等放在 `02-技术文档/` 全局目录中。 ### 1.5 新建项目流程 1. 复制 `_新建项目结构模板_/` 目录 2. 重命名为 `YYYY-公司/客户-项目名` 3. 根据项目类型删除不需要的目录 4. 将源码脚手架(`项目模板/` 下的对应模板)复制到新项目目录中 --- ## 二、文件命名规范 ### 2.1 通用规则 | 文件类型 | 命名格式 | 示例 | | -------- | -------------------- | ------------------------------------------ | | 文档类 | `中文描述_版本号.md` | `系统架构设计_v2.1.md` | | 代码文件 | `kebab-case.ext` | `user-service.ts`、`auth-middleware.py` | | 配置文件 | `点号前缀 + 小写` | `.env`、`.gitignore`、`docker-compose.yml` | | 脚本文件 | `动词-名词.sh/.py` | `deploy-prod.sh`、`backup-db.py` | | 图片资源 | `描述-尺寸.png` | `logo-256x256.png` | ### 2.2 日期相关文件 ``` 格式:YYYY-MM-DD_文件描述.ext 示例:2024-01-15_周报.md 2024-03-20_会议纪要-需求评审.md 2024-06-01_版本v2.0发布记录.md ``` ### 2.3 版本号文件 ``` 格式:名称_v主版本.次版本.修订号.ext 示例:API文档_v1.2.0.md 简历_全栈_v3.1.pdf ``` --- ## 三、代码命名规范 ### 3.1 前端(JavaScript/TypeScript) | 类型 | 命名格式 | 示例 | | ------------ | ------------------------- | ---------------------------------- | | 组件文件 | `PascalCase.tsx` | `UserProfile.tsx`、`NavBar.tsx` | | 页面组件 | `PascalCase.tsx` | `HomePage.tsx`、`LoginPage.tsx` | | 自定义Hook | `useCamelCase.ts` | `useUserAuth.ts`、`useDebounce.ts` | | 工具函数文件 | `camelCase.ts` | `formatDate.ts`、`httpClient.ts` | | 类型定义 | `PascalCase.ts` | `UserTypes.ts`、`ApiResponse.ts` | | 样式文件 | `kebab-case.css` | `user-profile.css` | | 测试文件 | `*.test.ts` / `*.spec.ts` | `UserProfile.test.ts` | **变量与函数:** ``` ✅ 变量:camelCase → userName、isLoading、productList ✅ 常量:UPPER_SNAKE → MAX_RETRY_COUNT、API_BASE_URL ✅ 函数:camelCase → getUserInfo()、handleSubmit() ✅ 组件:PascalCase → UserCard、ProductList ✅ 接口:PascalCase → IUserInfo、IProductItem(可选 I 前缀) ``` ### 3.2 后端(Python) | 类型 | 命名格式 | 示例 | | --------- | --------------------- | --------------------------------------- | | 模块文件 | `snake_case.py` | `user_service.py`、`auth_middleware.py` | | 类名 | `PascalCase` | `UserController`、`JwtAuthenticator` | | 函数/方法 | `snake_case` | `get_user_by_id()`、`validate_token()` | | 常量 | `UPPER_SNAKE` | `MAX_PAGE_SIZE`、`DEFAULT_TIMEOUT` | | 变量 | `snake_case` | `user_list`、`is_authenticated` | | 私有属性 | `_leading_underscore` | `_cache`、`_db_session` | ### 3.3 后端(Java) | 类型 | 命名格式 | 示例 | | ------- | ---------------- | -------------------------------------- | | 类/接口 | `PascalCase` | `UserService`、`OrderRepository` | | 方法 | `camelCase` | `findUserById()`、`createOrder()` | | 常量 | `UPPER_SNAKE` | `MAX_RETRY_TIMES`、`DEFAULT_PAGE_SIZE` | | 包名 | `全小写用点分隔` | `com.company.user.service` | | 变量 | `camelCase` | `userName`、`productList` | ### 3.4 后端(Go) | 类型 | 命名格式 | 示例 | | ---------- | ----------------------------- | ------------------------------------ | | 包名 | `全小写一个单词` | `user`、`handler`、`middleware` | | 导出类型 | `PascalCase` | `UserService`、`HttpClient` | | 非导出类型 | `camelCase` | `userCache`、`dbPool` | | 接口 | `PascalCase + er` | `Reader`、`Writer`、`UserRepository` | | 常量 | `PascalCase` 或 `UPPER_SNAKE` | `MaxRetries`、`DEFAULT_PORT` | --- ## 四、Git 分支命名规范 ### 4.1 分支类型前缀 ``` 格式:类型/描述 ``` | 类型前缀 | 用途 | 示例 | | ----------- | ---------- | ----------------------------------------------- | | `feat/` | 新功能开发 | `feat/user-login`、`feat/order-export` | | `fix/` | Bug修复 | `fix/login-timeout`、`fix/data-duplicate` | | `hotfix/` | 紧急修复 | `hotfix/payment-crash`、`hotfix/security-patch` | | `refactor/` | 代码重构 | `refactor/user-module`、`refactor/api-layer` | | `docs/` | 文档更新 | `docs/api-guide`、`docs/deploy-readme` | | `chore/` | 构建/工具 | `chore/update-deps`、`chore/ci-config` | | `test/` | 测试相关 | `test/user-unit-test`、`test/e2e-checkout` | ### 4.2 分支命名规则 ``` ✅ 使用 kebab-case 描述 ✅ 简短但有意义(3-5个词) ✅ 可关联 issue 编号:feat/123-user-login ❌ 避免使用个人名称、日期等无关信息 ``` --- ## 五、数据库命名规范 ### 5.1 表命名 ``` 格式:模块前缀_表名(全小写,snake_case) 示例:user_accounts、order_items、product_categories ``` | 类型 | 规则 | 示例 | | ------ | ------------- | --------------------------------- | | 业务表 | `模块_实体名` | `user_profiles`、`order_payments` | | 关联表 | `表A_表B` | `user_role`、`product_tag` | | 日志表 | `实体名_logs` | `login_logs`、`operation_logs` | | 配置表 | `sys_configs` | `sys_configs`、`sys_dict_items` | ### 5.2 字段命名 ``` ✅ 主键:id(统一使用) ✅ 外键:关联表_id(如 user_id、order_id) ✅ 布尔:is_前缀(is_active、is_deleted) ✅ 时间:_at 后缀(created_at、updated_at) ✅ 统一定义:created_at、updated_at、deleted_at(软删除) ``` ### 5.3 索引与约束 ``` 主键索引:pk_表名 唯一索引:uk_表名_字段名 普通索引:idx_表名_字段名 外键约束:fk_表名_关联表名 ``` --- ## 六、API 命名规范 ### 6.1 RESTful URL 设计 ``` 格式:名词复数 + 资源层级 示例:/api/v1/users、/api/v1/users/{id}/orders ``` | 规则 | 说明 | 示例 | | ---------- | ------------------------ | ------------------------------------ | | 版本前缀 | `/api/v1/` 或 `/api/v2/` | `/api/v1/products` | | 资源复数 | 使用名词复数 | `/users`、`/orders` | | 层级关系 | 最多3层嵌套 | `/users/{id}/orders/{orderId}/items` | | 小写短横线 | 多词用 `-` 连接 | `/user-profiles`、`/order-items` | ### 6.2 HTTP 方法 ``` GET /api/v1/users → 获取用户列表 GET /api/v1/users/{id} → 获取单个用户 POST /api/v1/users → 创建用户 PUT /api/v1/users/{id} → 全量更新用户 PATCH /api/v1/users/{id} → 部分更新用户 DELETE /api/v1/users/{id} → 删除用户 ``` ### 6.3 响应格式 ```json { "code": 0, "message": "success", "data": {}, "timestamp": 1700000000000 } ``` --- ## 七、项目命名规范 ### 7.1 项目仓库命名 ``` 格式:平台-项目简称(kebab-case) 示例:web-admin、api-gateway、mobile-app、data-pipeline ``` | 项目类型 | 前缀建议 | 示例 | | -------- | ------------------ | ------------------------------- | | Web前端 | `web-` | `web-admin`、`web-portal` | | 移动端 | `app-` / `mobile-` | `app-ios`、`mobile-android` | | 后端服务 | `api-` / `svc-` | `api-user`、`svc-payment` | | 微服务 | 服务名直接 | `user-service`、`order-service` | | 工具库 | `lib-` / `utils-` | `lib-common`、`utils-helper` | | 数据管道 | `data-` / `etl-` | `data-warehouse`、`etl-sync` | ### 7.2 包名/模块名 ``` ✅ npm 包:@scope/package-name ✅ Maven 坐标:com.company.project ✅ Python 包:简短的 snake_case ✅ Go 模块:github.com/user/repo ``` --- ## 八、环境与配置命名 ### 8.1 环境标识 ``` dev → 开发环境 test → 测试环境 staging → 预发布/灰度环境 prod → 生产环境 ``` ### 8.2 配置文件命名 ``` .env → 本地开发环境变量 .env.development → 开发环境 .env.test → 测试环境 .env.production → 生产环境 .env.local → 本地覆盖(不提交Git) ``` ### 8.3 Docker 相关 ``` Dockerfile → 默认构建文件 Dockerfile.prod → 生产环境构建 docker-compose.yml → 默认编排文件 docker-compose.override.yml → 本地覆盖 docker-compose.prod.yml → 生产环境编排 ``` --- ## 九、命名快速检查清单 在命名时,问自己以下几个问题: - [ ] 看到名字能否立刻知道它是什么?(**见名知意**) - [ ] 团队成员能否理解和遵循?(**团队共识**) - [ ] 是否与现有命名风格一致?(**风格统一**) - [ ] 是否避免了缩写和歧义?(**清晰明确**) - [ ] 长度是否适中?(**简短但完整**,3-5个词为佳) - [ ] 是否使用了正确的命名格式?(**camelCase / PascalCase / snake_case / kebab-case**) --- ## 十、反面教材(避免) | 场景 | ❌ 不推荐 | ✅ 推荐 | | -------- | -------------------------------- | -------------------------------------- | | 目录 | `工作/项目/src` | `01-工作/01-项目源码/工作项目` | | 文件 | `新建文件夹/最终版v3确定不改.js` | `user-service.js` | | 变量 | `a`、`tmp`、`data1` | `userName`、`orderTotal` | | 函数 | `doIt()`、`process()` | `sendNotification()`、`formatDate()` | | Git分支 | `zhangsan`、`fix-bug` | `feat/user-login`、`fix/order-timeout` | | 数据库表 | `user`、`order` | `users`、`orders`(复数) | | API | `/getUserInfo` | `GET /api/v1/users/{id}` | --- > **核心原则:一致性 > 个人偏好。** 选择一个命名规范,在整个项目中始终坚持使用。当加入现有项目时,遵循项目已有的命名约定,而非强行引入新规范。