菜单

支持目录

相关源文件

本文档描述了标准 Go 项目布局中支持目录的用途和用法。支持目录是专门的文件夹,用于促进开发、测试、文档和示例,但它们不直接构成应用程序的核心功能。有关核心代码目录的信息,请参阅 核心目录结构

支持目录概述

支持目录通过提供完整软件项目所需的基础设施来补充主要的应用程序代码。它们有助于在操作代码和支持资源之间保持清晰的隔离,使项目更易于维护和导航。

来源:README.md144-186

主要支持目录

测试目录(/test

/test 目录包含额外的外部测试应用程序和测试数据。此目录与通常与代码一起位于 /cmd/internal/pkg 中的单元测试分开。它用于可能需要特殊设置、附加测试数据或与外部系统集成的较大测试。

主要特性

  • 包含附加的测试应用程序、集成测试和性能测试
  • 包含全面测试可能需要的测试数据
  • 可根据不同的测试类型或组件组织成子目录
  • Go 将忽略名为 /test/data/test/testdata 的目录
  • ._ 开头的目录或文件也会被 Go 忽略

来源:README.md144-148

文档目录(/docs

/docs 目录包含设计文档、用户手册以及 GoDoc 生成的标准 API 文档以外的其他文档。您可以在此处放置架构概述、使用指南和其他人类可读的项目说明。

主要特性

  • 包含高级设计文档
  • 包含面向用户的文档
  • 可能包含图表、流程图和其他可视化说明
  • 补充 GoDoc 生成的代码级文档

来源:README.md152-156

工具目录(/tools

/tools 目录包含项目的支持工具。这些工具可能包括代码生成器、基准测试工具或其他有助于开发任务的应用程序。此目录中的工具可以导入 /pkg/internal 目录中的代码。

主要特性

  • 包含支持开发过程的实用程序
  • 工具可以导入 /pkg/internal 的代码
  • 通常包括代码生成器、分析器或自动化脚本
  • 工具可能在构建、测试或部署期间被调用

来源:README.md158-162

示例目录(/examples

/examples 目录包含项目公共 API 的示例应用程序或用法示例。这些示例可以帮助用户了解如何正确使用项目中的库或应用程序。

主要特性

  • 演示了公共 API 的正确用法
  • 提供了常见用例的工作代码示例
  • 可能包含展示集成模式的简单应用程序
  • 以实用的方式帮助记录功能

来源:README.md164-168

其他支持目录

第三方目录(/third_party

/third_party 目录包含外部辅助工具、分叉代码和其他第三方实用程序。您可以在此处放置您已修改或需要与应用程序捆绑但并非完全属于您自己的工具或代码。

主要特性

  • 包含带自定义的分叉外部代码
  • 包含项目所需的第三方工具
  • 可能包括 Swagger UI 等 UI 组件
  • 将外部依赖项与您自己的代码分开

来源:README.md170-172

Git Hooks 目录(/githooks

/githooks 目录包含项目的 Git hooks。这些 hooks 可以在提交或推送代码时自动执行任务,例如检查代码格式、运行测试或更新版本号。

来源:README.md174-176

资源目录(/assets

/assets 目录包含支持您存储库的其他资源,例如图像、徽标或其他项目所需的非代码文件。

来源:README.md178-180

网站目录(/website

/website 目录包含项目网站的数据(如果您不使用 GitHub Pages)。您可以在此处放置项目网站的源代码。

来源:README.md182-186

与开发工作流程的集成

支持目录在整个软件开发生命周期中发挥着至关重要的作用。下图说明了这些目录如何与开发工作流程集成。

来源:README.md144-186

使用模式和最佳实践

目录组织

目录建议的组织结构用法模式
/test可根据项目需求自由组织外部测试、集成测试和测试数据
/docs按主题或用户类型组织设计文档、用户手册、架构图
/tools每个子目录包含一个工具代码生成器、分析工具、实用程序
/examples按复杂性或功能组织简单的用法示例、完整的应用程序
/third_party按来源或目的分组修改后的外部工具、UI 组件
/githooks按 Git hook 类型提交前、推送前、合并后 hook
/assets按资源类型图像、视频、数据文件
/website标准的网站结构项目网站的源文件

来源:README.md144-186

代码可见性和导入关系

支持目录与核心目录具有特定的代码可见性和导入关系。

来源:README.md158-168

结论

支持目录为完整的 Go 项目提供了基本的基础设施,促进了代码的开发、测试、文档编制和演示。虽然它们不包含主要的应用程序逻辑,但对于维护结构良好、文档齐全且对开发人员友好的代码库至关重要。

在决定是将文件添加到支持目录还是核心目录时,请考虑其目的:如果它支持开发过程而不是实现应用程序功能,那么它可能属于支持目录之一。