Skip to content

Dev Principle for common project

一、原则

  1. 设计能简单,不复杂
  2. 代码模块化,接口化
  3. 工作文档化,协作化
  4. DRY (Don’t Repeat Yourself)

二、规范

2.1 项目规范

1 技术栈

Python,Django,Flask,React,Antd,Restful API

2 项目托管

  • Gitlab
  • 项目名称xxx-apixxx-fe, api为应用后端后端,fe为前端项目
  • 项目开发由maindev分支进行

3 项目管理

使用Gitlab IssueJira

4 开发和线上环境

一般情况项目有开发dev,测试test/nonlive/stage,生产production共三个环境。

5 软件版本

名称版本注释
Python3.8+pyenv或conda管理
Django1.11+新项目使用1.11+
Mysql5.6做主从配置

6 服务部署

  • 使用systemd管理服务进程
  • 使用Gitlab CI进行自动化发布

7 工程组织

假设你的项目名为foo, 建议目录结构:

Foo/
|-- bin/
| |-- abc.py
|
|-- deploy/
| |-- site.yml
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- app1
| | |-- __init__.py
| | |-- admin.py
| | |-- apps.py
| | |-- models.py
| | |-- views.py
| |
| |-- app2
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| |-- wsgi.py
| |-- nginx.conf
| |-- foo.service
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- manage.py
|-- requirements.txt
|-- README
  • bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行
  • deploy/: 存放部署相关文件
  • foo/: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录tests/存放单元测试代码; (3) urls、wsgi、settings以及nginx、service也放在此目录下
  • docs/: 存放一些文档
  • setup.py: 安装、部署、打包的脚本
  • requirements.txt: 存放软件依赖的外部Python包列表
  • README: 项目说明文件

2.2 编码规范

1 命名规范

  • 按照pep8规则命名
  • 注意函数动词和变量名词词性的区分
  • 因为Python没有类型声明,可以适当加上后缀比如url_list, info_dict等作为区分。动态语言里头良好的命名非常重要
  • 学好英语单词能为命名增色
  • 名称能够精确描述该变量或者函数等的意义,具有表现力

2 代码规范

  • 有些不易理解的变量或函数应作注释,难懂的代码要有注解,在文件的开始处有该文件的用途描述。一定要保持注释的一致性
  • 代码应该简洁、清楚并讲述了所发生的一切,我们的目标应该是写出最清晰的代码,而不是最巧妙的代码

3 数据库

  • 优先使用ORM,除非遇到性能问题,SQL语句相对不好维护,同时有注入风险
  • 合理使用ORM框架优化查询
  • 合理使用redismemcached等缓存数据库优化

三、其他

3.1 开发工具

/images/devops-full-pic.png