各语言的通用项目结构
对于稍微大一点的项目,就需要考虑项目结构的问题,过于扁平会导致结构混乱,而嵌套过于深入也会导致项目臃肿复杂。
Python
python开源项目目录结构参考 描述的结构值得参考:
$PROJ_NAME/ 按照你实际的项目名称创建目录。如果有多个子项目,就创建多个目录。它们都应该在 Pycharm 里设为 `sources root`
docs/ 项目文档
scripts/ 项目用到的各种脚本
tests/ 测试代码,也应该设置为 `source root`
extras/ 扩展,不属于项目必需的部分,但是与项目相关的 sample 等
dev_example/
production_example/
.gitignore
LICENSE 版权声明
README.md 项目说明文件,其他需要的目录下也可以放一个README文件,说明该目录的内容
setup.py # 如果仓库需要打包成 package,需要有这个文件。
poetry.toml # 使用 poetry 做依赖管理。也可以用 `requirements.txt`/`Pipfile`
注意: Python 项目不需要 src 文件夹,子项目都放在顶级目录下。
Java
相比之下呢,Java 项目通常设 src 文件夹,gradle 自动生成的项目结构如下:
项目根目录:
build:
- 编译输出
src:
main:
java:
- Java 代码包,sources root
kotlin:
- Kotlin 代码包,sources root
resources
- 配置文件、资源文件,resources root
test:
java:
- 测试代码包,test sources root
kotlin:
- Kotlin 测试代码包,test sources root
resources
- 测试用的配置文件、资源文件,test resources root
然后再通过功能横向或者纵向划分,把功能分成多个 package 实现,这一点上 Java 和 Python 通用,比如 MVC 分层。
Golang
参见 Standard Go Project Layout,Go 语言的项目结构,不得不说有点特别。