• 软件目录结构规范


    '''
    foo/
    bin/ #存放项目的一些可执行文件,当然你可以起名script/之类也可
    foo
    foo/ #存放项目源代码 1,源代码中所有模块、包都应该放在此目录。不要置于顶层目录
    tests/ # 2,其子目录tests/ 存放单元测试代码 3,程序入口最好命名为main.py
    __init__.py
    test_main.py
    __init__.py
    main.py # 程序入口
    docs/ #存放一些文档
    conf.py
    abc.rst

    setup.py #安装,部署,打包的脚本
    requirements.txt #存放依赖的外部python包列表
    readme #项目说明文件

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

    我觉得有以上几点是比较好的一个readme。在软件开发初期,由于开发过程中以上内容可能不明确或者发生变化,
    并不是一定要在一开始就将所有信息都不全。但是在项目完结的时候,是需要撰写这样的一个文档的

    关于requirements.txt 和setup.py
    setup.py
    一般来说,用setup.py来管理代码的打包,安装,部署问题。业界标准的写法是用python流行的打包工具setuptools来管理这些。
    这种方式普遍应用于开源项目中。不过这里的核心思想不是用标准化的工具来解决这些问题,而是说,一个项目一定要有一个安装部署工具
    能快速便捷的在一台新机器上将环境装好、代码部署好和将程序运行起来。

    老师开始接触python写项目的时候,安装环境,部署代码,运行程序这个过程全是手动完成,遇到如下问题
    1,安装环境时经常忘了最近又添加了一个新的python包,结果一到线上运行,程序就出错了
    2、python包的版本依赖问题,有时候我们程序中使用的是一个版本的python包,但是官方的已经是最新的包了,通过手动安装就可能装错
    3、如果依赖的包很多的话,一个一个安装这些依赖很费时的事
    4、新同学开始写项目的时候,将程序跑起来非常麻烦,因为可能经常忘了要怎么安装各种依赖

    setup.py可以将这些事情自动化起来,提高效率,减少出错的概率。复杂的东西自动化,能自动化的东西一定要自动化。这是个好习惯
    setuptools的文档比较庞大,刚接触的话,可能不太好找到切入点。学习技术的方式就是看他人是怎么用的,可以参考一下python的
    一个web框架,flask是如何写的

    requirements.txt
    这个文件存在的目的是:
    1、方便开发者维护软件的包依赖。将开发过程中新增的包添加进这个列表中,避免在setup.py安装依赖时漏掉软件包。
    2、方便读者明确项目使用了哪些python包

    这个文件的格式是每一行包含一个包依赖的说明,通常是flask>=0.10这种格式,要求是这个格式能被pip识别
    这样就可以简单的通过pip install -r requirements.txt 把所有python包依赖都装好

    关于配置文件的使用方法
    注意,在上面的目录结构中,没有将conf.py放在源码目录下,而是放在docs/目录下
    很多项目对配置文件的使用做法是:
    #################
    1、配置文件写在一个或多个python文件中,比如此处的conf.py
    2、项目中哪个模块用到这个配置文件就直接通过 import conf 这种形式在代码中使用配置
    ################
    这种做法1,让单元测试变得困难(因为模块内部依赖了外部配置)
    2,另一方面配置文件作为用户控制程序的接口,应当可以由用户自由指定该文件的路径。
    3,程序组建可复用性太差,因为这种贯穿所有模块的代码硬编码方式,使得大部分模块都依赖conf.py
    [[[[[[[[[[[[[[]]]]]]]]]
    所以正确的方式是:1、模块的配置都是可以灵活配置的,不受外部配置文件的影响
    2、程序的配置也可以是灵活控制的
    能够佐证这个思想的是,用过nginx和mysql的同学都知道,nginx、mysql这些程序都是可以自由的指定用户配置

    所以,不应当在代码中直接import conf来使用配置文件。上面目录结构中的conf.py 是给出的一个配置样例,
    不是写死在程序中直接引用的配置文件。可以通过给main.py启动参数指定配置路径的方式来让程序读取配置内容。
    当然,这里的conf.py 你可以换个类似的名字,比如setting,py 或者你也可以使用其他格式的内容来编写配置文件,
    比如settings.yaml 之类
    '''
  • 相关阅读:
    从未改过的网名,一如既往的孤荷凌寒——我的信息技术之路之五
    编程思维的养成——我的信息技术之路之五
    从无知无畏到虚心借鉴——我的信息技术之路之四
    相信自己,看着目标前进——我的信息技术之路之三
    先迈开步子再找路——我的信息技术之路之二
    每个问题的解决都预设多种算法方案——我的信息技术之路之七
    软件开发流程之三:可行性研究
    软件开发流程之二:开发流程
    软件开发流程之九:项目组建设
    软件开发流程之七:软件测试
  • 原文地址:https://www.cnblogs.com/pyyu/p/6798243.html
Copyright © 2020-2023  润新知