本章重点:

    理解在开发人标准软件时,如何布局项目目录结构,以及注意开发规范的重要性。

    一、为什么要有好的目录结构

    二、目录组织的方式

    三、关于README的内容

    四、关于requirements.txt和setup.py

==================================================================================

一、为什么要有好的目录结构

  好的设计项目目录结构,就和编码风格一样,是每个程序员都有的风格,但是在流水化标准化作业过程中,个性和风格是不被鼓励的。

  如果你去维护一个非常不好读的项目,虽然实现逻辑并不复杂,但是对后续的维护者来说就是灾难。

  一个层次清晰的目录结构,可以提高程序的可维护性:

    1. 可读性高:

      后续维护人员可以一眼看懂目录结构,不必为复杂混乱的层次耗费大量精力。测试文件在哪,配置文件在哪会被放置在规范操作的地方,可以让后续人员快速的了解这个项目。

    2. 可维护性高:

      看清目录架构之后,维护者可以将后续新增的文件和代码按照规范放置在规定的地方,虽然后续代码和文件增多,但是项目目录并不会混乱,仍然能够快速组织良好

  所以说,保持一个层次清洗的目录结构是非常必要的,也是体现一个程序员思路和视野格局的一个标准

二、目录组织的方式

  目前各个开发语言在工程目录结构方面,已经取得了一些共识的目录结构.

  例如,如下的一个简单的ATM目录结构,开发人员可以快速的了解项目的启动入口,用户层模块,逻辑接口层模块,数据处理模块,日志模块等等。

  

  

  如下的foo项目,就是一个清晰合理的目录结构。

  

   bin:/ 存放项目的一些可执行文件,类似的有script/文件

  foo:/ 存放项目的所有源代码

    1. 源代码中的所有模块、包都改放在这个目录,不能放在顶层目录

    2. 子目录tests/用来存放单元测试代码

    3. 程序的入口一般命名为main.py

  docs:/ 存放一些文档

  setup.py:/ 安装,部署,打包脚本

  requirements.txt: 存放软件依赖的外部Python包列表

  README: 项目说明文件

  除此之外,一些开源软件还会有LECENSE.txt, ChangeLog.txt等文件,目录组织和这个类似。

三、关于README的内容

  README在GITHUB中很常见,一般来说都是必备的。该文件就要简要的介绍该项目的信息,让读者可以快速了解这个项目。

  

  README一般说明以下几个事项:

    1. 软件的定位,软件的基本功能

    2. 运行代码的方法,安装的环境,启动命令

    3. 简要的使用说明

    4. 代码的目录结构说明,可以详细的说明软件的基本原理

    5. 常见问题说明

四、关于requirements.txt和setup.py

  setup.py

  一般来说,用setup.py来管理代码的打包、安装、部署问题。业界标准的写法是用Python流行的打包工具setuptools来管理这些事情,这种方式普遍应用于开源项目中。

  不过这里的核心思想不是用标准化的工具来解决这些问题,而是说,一个项目一定要有一个安装部署工具,能快速便捷的在一台新机器上将环境装好、代码部署好和将程序运行起来。

  requirements.txt

  这个文件存在的目的是:

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

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

Python入门之软件开发目录规范的更多相关文章

  1. python模块导入-软件开发目录规范-01

    模块 模块的基本概念 模块: # 一系列功能的结合体 模块的三种来源 """ 模块的三种来源 1.python解释器内置的模块(os.sys....) 2.第三方的别人写 ...

  2. Python 浅谈编程规范和软件开发目录规范的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是觉得注释和命名规范的重要性了,因为几乎每个字符都要咨询他,用老师的话来说,这就是命名不规范的后续反应.所以此时的我意识到写一篇关于注释程序的重要 ...

  3. Python 入门之 软件开发规范

    Python 入门之 软件开发规范 1.软件开发规范 -- 分文件 (1)为什么使用软件开发规范: 当几百行--大几万行代码存在于一个py文件中时存在的问题: 不便于管理 修改 可读性差 加载速度慢 ...

  4. Python模块:Re模块、附软件开发目录规范

    Re模块:(正则表达式) 正则表达式就是字符串的匹配规则 正则表达式在多数编程语言里都有相应的支持,Python里面对应的模块时re 常用的表达式规则:(都需要记住) “ . ”   #  默认匹配除 ...

  5. python基础语法10 函数递归,模块,软件开发目录规范

    函数递归: 函数递归指的是重复 “直接调用或间接调用” 函数本身, 这是一种函数嵌套调用的表现形式. 直接调用: 指的是在函数内置,直接调用函数本身. 间接调用: 两个函数之间相互调用间接造成递归. ...

  6. python浅谈编程规范和软件开发目录规范的重要性

    前言 我们这些初学者,目前要做的就是遵守代码规范,这是最基本的,而且每个团队的规范可能还不一样,以后工作了,尽可能和团队保持一致,目前初学者就按照官方的要求即可 新人进入一个企业,不会接触到核心的架构 ...

  7. Python记录13:软件开发目录规范

    软件开发目录规范 开发一个软件,一个工程项目,一般应该具备以下的几个基本的文件夹和模块,当然,这并不是一成不变的,根据项目的不同会有一定的差异,不过作为一个入门级的新手,建议暂时按照以下的规范编写: ...

  8. python 之 软件开发目录规范 、logging模块

    6.4 软件开发目录规范 软件(例如:ATM)目录应该包含: 文件名 存放 备注 bin start.py,用于起动程序   core src.py,程序核心功能代码   conf settings. ...

  9. py 包和模块,软件开发目录规范

    目录 py 包和模块,软件开发目录规范 什么是包? 什么是模块? 软件开发目录规范 py 包和模块,软件开发目录规范 什么是包? 包指的是内部包__init__.py的文件夹 包的作用: 存放模块,包 ...

随机推荐

  1. python----题库(一)

    1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py #必须在首行有 #!/usr/bin/env pyth ...

  2. IE new Date NaN 问题

    var ctime = "2015/1/7 10:35"; ctime = ctime.replace(/-/g,"/"); //为了兼容IE var date ...

  3. ubuntu16.04下安装opencv3.1.0

    1.安装依赖项 sudo apt--dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 可选的 sudo apt--dev lib ...

  4. Bazel构建工具的安装

    官方Doc:https://docs.bazel.build/versions/master/install-ubuntu.html 使用Bazel定制的APT存储库 (recommended) 1. ...

  5. 为VS定制一个自己的代码生成器 - 自定义工具开发

    自定义工具开发 为VS定制一个自己的代码生成器 如何在Visual Studio中开发自己的代码生成器插件 你必须懂的 T4 模板:深入浅出 Regasm组件注册工具使用方法 Regasm 注册C# ...

  6. HDU 2089 - 不要62 - [数位DP][入门题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  7. php之setcookie

    注意在任何发送请求头之前不能有输出,不然会获取不到header头 setcookie(key,value, expires, 'path', domain); 在发送cookie时,会自动把cooki ...

  8. grafana,graphite,influxdb with docker

    ++++++++++++++++++++++++ sudo docker pull tutum/influxdb sudo docker run -d -p 8083:8083 -p8086:8086 ...

  9. ArcGIS Server 服务器日志(待修改)

    有时遇到服务相关错误,需要查看日志来排查,这里简单写下日志相关操作. 服务器日志:http://resources.arcgis.com/zh-cn/help/main/10.2/index.html ...

  10. grunt学习三-bower(一)

    bower是什么?官网给出的  a package manager fow the web.简单说引入文件版本管理,例如jquery,传统做法到jquery的官网下载下,在引入,这样比较繁琐,也不利用 ...