软件目录结构规范

软件开发规范

一、为什么要设计好目录结构?

1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。

2.可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。

二、目录组织方式

关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。

假设你的项目名为ATM

ATM/
|-- 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 写上日志
|
|-- __init__.py
|-- README 项目说明文件 注:运行程序时,在bin目录下执行start.py代码,不可以直接执行core下的模块。

关于README的内容

这个我觉得是每个项目都应该有的一个文件,目的是能简要描述该项目的信息,让读者快速了解这个项目。

它需要说明以下几个事项:

  1. 软件定位,软件的基本功能。
  2. 运行代码的方法: 安装环境、启动命令等。
  3. 简要的使用说明。
  4. 代码目录结构说明,更详细点可以说明软件的基本原理。
  5. 常见问题说明。

python 软件目录规范的更多相关文章

  1. 初学Python——软件目录结构规范

    为什么要设计好目录结构? 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 可维护性高: 定义好组织 ...

  2. python 软件管理规范

    一.背景 软件开发是一个系统工程,当然编码实现是其中尤其重要的一个环节,关乎到功能需求的实现好坏.这个环节中除了编码这一硬功之外,与之相关的编码风格这一柔道,虽然没有直接决定功能的实现与否,但却在很大 ...

  3. python软件开发规范&分文件对于后期代码的高效管理

    根据本人的学习,按照理解整理和补充了python模块的相关知识,希望对于一些需要了解的python爱好者有帮助! 一.软件开发规范--分文件 当代码存在一个py文件中时: 1.不便于管理 (修改,增加 ...

  4. Python软件目录结构

    目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论. 这里面说的已经很好了, ...

  5. 从入门到自闭之Python软件命名规范

    软件命名规范:分文件存储 当代码存放在一个py文件中时会存在一下缺点: 不便于管理 可读性差 加载速度慢 是Django的雏形 程序员预定俗称的一些东西 启动文件:也叫启动接口,通常文件夹名字使用bi ...

  6. Python软件目录结构规范

    设计项目目录结构和'代码编码风格'一样, 是为了达到以下两点: 可读性高 可维护性高 目录组织方式 Stackoverflow上有一些比较好的范式.

  7. python 装饰器和软件目录规范一

    1.装饰器和迭代器的概念. 装饰器本质是一个函数,是为其他函数添加附加功能. 原则:不修改原函数源代码 不修改原函数的调用方式 2.装饰器的简单应用 # Author : xiajinqi impor ...

  8. [ python ] 软件开发规范

    在python开发中,我们建议采用如下规范: soft/ ├── bin # 程序执行文件目录 │   ├── __init__.py │   └── start.py # 程序开始执行脚本文件 ├─ ...

  9. Python软件开发规范

    bin  整个程序的执行路口    start.py conf 配置文件     setting.py lib   库  模块与包    common.py    sql.py core  核心逻辑  ...

随机推荐

  1. ELK_疑难杂症处理

    一.ELK实用知识点总结 1.编码转换问题 这个问题,主要就是中文乱码. input中的codec=>plain转码: codec => plain {charset => &quo ...

  2. Linear Equations

    4.1 Linear Equations with One Independent Variable

  3. HBase单机安装及Phoenix JDBC连接

    HBase是建立在Hadoop文件系统之上的分布式面向列的数据库,它是横向扩展的.它利用了Hadoop的文件系统(HDFS)提供的容错能力. HBase提供对数据的随机实时读/写访问,可以直接HBas ...

  4. 关于mysql的符合主键的定义和解释

    DROP TABLE IF EXISTS `v9_vote_data`;CREATE TABLE `v9_vote_data` (  `userid` mediumint(8) unsigned DE ...

  5. 吴裕雄--天生自然python学习笔记:pandas模块用 dataframe.loc 通过行、列标题读取数据

    用 df.va lue s 读取数据的前提是必须知道学生及科目的位置,非常麻烦 . 而 df.loc 可直接通过行.列标题读取数据,使用起来更为方便 . 使用 df.loc 的语法为: 行标题或列标题 ...

  6. ESTScan|EORF|Augustus|nr|PSM|

    生物信息学方法的目的有二:1.常规找鉴定已知蛋白2.鉴定新蛋白 控制数据库大小可以通过增多酶切使得大数据库灵敏性增高数据量变小: 分步搜索是对于经典方法使用后找不到的新蛋白进行补充挖掘,预测蛋白与高可 ...

  7. warning: LF will be replaced by CRLF in ** 的原因及解决办法

    https://blog.csdn.net/man_zuo/article/details/88651416

  8. AUTO Uninstaller 常见问题

    小伙伴是不是遇到 CAD/3dmax/maya/Revit/Inventor 安装失败或者安装不了的问题了呢?AUTODESK系列软件着实令人头疼,CAD/3dmax/maya/Revit/Inven ...

  9. python3下scrapy爬虫(第一卷:安装问题)

    一般爬虫都是用urllib包,requests包 配合正则.beautifulsoup等包混合使用,达到爬虫效果,不过有框架谁还用原生啊,现在我们来谈谈SCRAPY框架爬虫, 现在python3的兼容 ...

  10. HDU-1164-Eddy's research I(分解质因数)

    由于这道题目数据范围小,所以属于水题.可以采取暴力的做法来解决. 代码如下: #include"bits/stdc++.h" using namespace std; ; ]; v ...