软件目录结构规范
软件开发规范
一、为什么要设计好目录结构?
1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。
2.可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。
二、目录组织方式
关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。
假设你的项目名为Notebook
Notebook/
|-- bin/ 存放项目的一些可执行文件,当然你可以起名script/
之类的也行,但bin/更直观。易懂
| |-- __init__
| |-- start.py 写启动程序
|
|-- core/ 存放项目的所有源代码(核心代码)。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。 (2) 其子目录tests/
存放单元测试代码; (3) 程序的入口最好命名为main.py
| |-- tests/
| | |-- __init__.py
| | |-- test.main.py
| |
| |-- __init__.py
| |-- test_main.py| 存放核心逻辑
|
|-- conf/ 配置文件
| |-- __init__.py
| |-- setting.py 写上相关配置
|
|---db/ 数据库文件
| |--db.json 写数据库文件
|
|-- docs/ 存放一些文档
|
|-- lib/ 库文件,放自定义模块和包
| |-- __init__.py
| |-- common.py 放常用的功能
|
|-- log/ 日志文件
| |-- access.log 写上日志
|
|-- README 项目说明文件
注:运行程序时,在bin目录下执行start.py代码,不可以直接执行core下的模块。
README相关
使用过开源软件的朋友们都知道README可以给软件的使用带来很大的帮助,包括软件介绍、功能定位、安装启动使用方法、有建议或bug怎么联系作者等,其必要性和重要性不言而喻。
因此每一个项目都应该有README说明,好的README应该至少包括以下几方面的内容:
- 软件的简要介绍、功能定位、适用场景等
- 软件的安装、环境依赖、启动方法、常见使用命令(使用说明)等
- 代码的目录结构说明
- 常见问题说明
- 遇到建议或bug如何联系作者或项目组
如果再编写的更详细,可以考虑简述软件的基本原理。这方面最好的参考就是开源软件的README,如nginx,redis等。