本章重点:

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

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

    二、目录组织的方式

    三、关于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包依赖都装好了。

转载于:https://www.cnblogs.com/JetpropelledSnake/p/8778803.html

Python入门之软件开发目录规范相关推荐

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

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

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

    文章目录 1 编程规范的重要性 1.1 注释 Python 中的特殊注释 1.2 规范命名变量: 1.2.1 变量定义规则: 1.2.2 变量规范命名注意事项: 1.2.3 总体命名规则: 1.3 排 ...

  3. 7.16模块及软件开发目录规范

    模块 1.什么是模块? 就是一系列功能的结合体 2.模块的三种来源 (1)内置的(python解释器自带) (2)第三方的(别人写的) (3)自定义的(你自己写的) 3.模块的四种表现 (1)使用py ...

  4. python软件开发目录_软件开发目录规范

    为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要.软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下 Foo/ |- ...

  5. 模块简介/模块的导入/模块的查找顺序/绝对导入和相对导入/软件开发目录规范...

    一.模块的简介 什么是模块: 模块就是一系列功能的结合体 模块的三种来源: 1.内置的 2.第三方的 3.自定义的 模块的四种表现形式: 1.使用python编写的py文件(也就意味着py文件也可以称 ...

  6. 软件开发编码规范_如果您只喜欢编码,请不要成为软件开发人员

    软件开发编码规范 If you are starting now or thinking about to start a software development career. Or even i ...

  7. 视频教程-Python入门-系列游戏开发/太空阻击-Python

    Python入门-系列游戏开发/太空阻击 20年软件项目开发管理经验 工信部人才交流中心特聘专家讲师 日本U-CAN在线教育特聘主任讲师 国家十二·五规划软件工程教材作者(书:清华大学出版社出版) 中 ...

  8. 华为软件开发行为规范

    https://wenku.baidu.com/view/3696dec3534de518964bcf84b9d528ea81c72f3f.html https://www.cnblogs.com/z ...

  9. 高薪聘请2021/2022届本/硕/博数学、物理、统计、计算机、软件等专业 1、量化软件开发工程师(本科211以上)base北上杭深关键词:c++、python、java软件开发

    高薪聘请2021/2022届本/硕/博 数学.物理.统计.计算机.软件等专业 1.量化软件开发工程师 (本科211以上)base北上杭深 关键词:c++.python.java软件开发 年40-70万 ...

最新文章

  1. python framework jdon_一天学会Python Web框架(十二)产品管理
  2. oracle 游标中抛出异常的处理方式
  3. 【深度学习】移动翻转瓶颈卷积的实现(mobile inverted bottleneck convolution)
  4. 【C 语言】文件操作 ( 按照内存块的方式读写文件 | fread 函数 | fwrite 函数 )
  5. 引入antd组件样式_扩大团队技术影响力,搭建团队自己的 UI 组件库
  6. 不同dll相同Type.FullName引发的问题
  7. 什么是 CD 管道?一文告诉你如何借助Kubernetes、Ansible和Jenkins创建CD管道!
  8. 初学者python笔记(json模块、pickle模块、xml模块、shelve模块)
  9. SyntaxError: unexpected EOF while parsing成功解决
  10. 为什么打印出来的文件右边有阴影_怎样将十几几十页的长文件文档打印成A4纸对折的小册子?...
  11. 计算机视觉三角测量公式,摄影测量(计算机视觉)中的三角化方法
  12. Codeforces-1682B: AND Sorting 【构造、排序、位运算】
  13. python实现排序算法lowb三人组之选择排序
  14. 微信这个设置你们关闭了吗?
  15. 16.5 项目:向会员发送会费提醒电子邮件
  16. 11届蓝桥杯青少年组C++全国赛高级组
  17. andorid之摄像头驱动流程
  18. 2D横版游戏角色素材可商用
  19. Kelvin四线连接电阻测试技术及应用
  20. 给你心爱的 npm 包上个『北京户口』

热门文章

  1. Spring MVC 无XML配置入门示例
  2. 菜鸟教程工具(三)——Maven自己主动部署Tomcat
  3. SQLLoader1(简单测试,以控制文件方式导入数据)
  4. 低版本系统兼容的ActionBar(六)用Fragment+ViewPager+Tab实现快速导航
  5. java 查找注解_Java利用反射如何查找使用指定注解的类详解
  6. shell中用grep查找并且不输出_grep awk 搜索日志常用命令
  7. c++多边形扫描线填充算法_基于3DGIS技术的梯形格网构建及其简化算法设计
  8. win10鼠标灵敏度怎么调_和平精英灵敏度怎么设置才最合适 调最适合自己用的
  9. 永济计算机培训,永济云计算培训,永济计算机培训学费,永济计算机学完工作好找吗 - IT教育频道...
  10. python查找指定文件夹并重命名_python获取指定文件夹下的所有文件名,并删选指定类型文件进行重命名以及撤销重命名...