软件开发 - 目录规范

目录结构 作用:
1.可读性高
2.可维护性高

目录组织:
luffy
   log
   conf
   core 
   libs/modules
   docs 
   README 
       install 
           python3 setup.py install
   setup.py
   bin/
      luffy_server.py 
   requirements.txt

 pip freeze 可列出所有得第三方包

假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:

Foo/
|-- bin/
|   |-- foo
|
|-- foo/
|   |-- tests/
|   |   |-- __init__.py
|   |   |-- test_main.py
|   |
|   |-- __init__.py
|   |-- main.py
|
|-- docs/
|   |-- conf.py
|   |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
解释:
 1.bin:存放项目得一些可执行文件
 2.foo:存放项目得所有源代码
   2.1.源代码中得所有模块,包,放在此目录,不要至于顶层目录。
   2.2.子目录tests存放单元测试
   2.3.程序得入口命名为main.py
 3.docs:存放一些文档
 4.setup.py:安装,部署,打包得脚本
 5.requirements.txt:存放软件依赖得外部python包列表 (pip freeze 可列出所有得第三方包)
 6.README:项目说明书


开源软件得目录组织
  https://jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/

2.目录理解

README: 
 每个项目都应该有的一个文件,简要描述该项目的信息,让读者快速了解这个项目
 1.软件定位,软件的基本功能。
 2.运行代码的方法: 安装环境、启动命令等。
 3.简要的使用说明。
 4.代码目录结构说明,更详细点可以说明软件的基本原理。
 5.常见问题说明。

setup.py:
 python流行的打包工具:setuptools
     https://pythonhosted.org/setuptools/setuptools.html#developer-s-guide
 一个项目一定要有一个安装部署工具,快速便捷的在一台新机器上环境装好,代码部署好,程序运行起来。
 “复杂的东西自动化,能自动化的东西一定要自动化”
 
  学习技术的方式就是看他人是怎么用的。可以参考python的一个web框架,flask是如何写的?
   https://github.com/pallets/flask/blob/master/setup.py
   
requirement.txt:
 1.方便开发者维护软件的包依赖
 2.方便读者明确项目使用了哪些包
 具体格式说明:
    https://pip.readthedocs.io/en/1.1/requirements.html 

配置文件的使用方法:
 1.配置文件写在一个或多个python文件中,比如此处的conf.py。
 2.项目中哪个模块用到这个配置文件就直接通过import conf这种形式来在代码中使用配置。
 
 这样做不好:
 1.这让单元测试变得困难(因为模块内部依赖了外部配置)
 2.另一方面配置文件作为用户控制程序的接口,应当可以由用户自由指定该文件的路径。
 3.程序组件可复用性太差,因为这种贯穿所有模块的代码硬编码方式,使得大部分模块都依赖conf.py这个文件。

 配置的使用,更好的方式是:
 1.模块的配置都是可以灵活配置的,不受外部配置文件的影响。
 2.程序的配置也是可以灵活控制的。
posted @ 2018-02-27 19:19  Alice的小屋  阅读(197)  评论(0编辑  收藏  举报