代码规范

代码规范是最重要的一个点,写代码很容易,写好代码很难。涉及代码规范方面的问题,大家写代码的时候多注意下。

针对我们同学写python代码时经常出现的问题,总结了以下规范:

  1. 命名规范:
    1. 类名——驼峰方式命名,例:AnyClass。
    2. 方法名、变量名、模块名——全小写字母加下划线组成,例:any_method, any_variable。
  2. 代码格式化:提交的每一个代码文件都需要经过格式化,并推荐使用代码检查插件,养成好的编码习惯:black或pep8。
  3. 注释规划化:
    1. 注释中#后面要加空格,中文和英文之间要加空格,例:# 这是一个包含 en words 的注释。
    2. 标点符号统一用英文的标点符号,不用中文的标点符号。
  4. 常量化:一旦一个字符串值出现过两次及以上,就要提取成有意义的常量。常量名——全大写英文字母加下划线组成,例:ENV_NAME = "test"。
  5. 配置化:一些经常需要手动修改的常量值提取到配置系统中,例:ENV_NAME = get_from_apollo_conf("env_name")。
  6. 引用分组:自带库中模块引用一组、外部库中模块引用一组、公司内部库中模块引用一组、当前项目内部模块引用一组。
  7. 可读性(多花一些时间去思考如何命名是值得的):
    1. 方法名要和方法实现保持一致性原则。一些反例:
      1. 方法名为query_config(self),实际的动作为self.config = xxx,query应该改成init。
    2. 减少不必要的省略。例如:send_message不要省略为send_m。
    3. 类名和方法名要区分开:
      1. 类名一般以名词结尾。例如:XxxManager, XxxClient, XxxBuilder。
      2. 方法名一般以动词开头。例如:query_xxx, init_xxx, get_xxx, update_xxx, add_xxx。
  8. 职责单一:方法的实现要遵从高内聚、低耦合、职责单一原则。一些反例:
    1. 方法名为query_xxx,实际的逻辑为先初始化配置、再进行了一些操作对某些状态进行了更新、再查询了xxx,实际这个方法中包含了很多步骤,不只是query。既不满足一致性原则,也不满足职责单一原则。

日志规范

  1. 日志内容:
    1. 全部由小写英文字母+英文字符+空格组成,不使用中文及特殊格式的标点符号。
    2. 不使用连续的空格。
  2. 日志等级:
    1.  避免使用错误的级别输出日志。比如:用info级别的日志输出error信息。
      1. debug级别:记录调适性质的日志。比如:输入输出、接口返回值等。
      2. info级别:记录程序关键运行阶段以及关键状态变化的日志。
      3. warn级别:记录告警级别的日志。比如:走到了某个代码路径分支,虽然不代表错误,但需要引起重视。
      4. error级别:记录错误、异常级别的日志。
      5. fatal级别:记录崩溃性的日志。
  3. 日志时间格式(精确到毫秒):yyyy-MM-dd HH:mm:ss.SSS

Python安装

快速下载python

国内python3.8.10版本下载地址:https://mirrors.huaweicloud.com/python/3.8.10/

安装pyenv

下载并安装pyenv: 

# 下载 pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

# bash 配置
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# zsh 配置
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

# 配置生效
exec $SHELL -l

# 查看 pyenv 版本
pyenv --version

安装python

Linux centos下通过pyenv安装python过程:

# 安装依赖
yum install -y gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel ncurses-devel libffi-devel

# 下载 python3.8.10 并移到 pyenv 的缓存目录下
wget https://cdn.npmmirror.com/binaries/python/3.8.10/Python-3.8.10.tar.xz
mkdir ~/.pyenv/cache
mv Python-3.8.10.tar.xz ~/.pyenv/cache/

# 安装 python3.8.10
pyenv install 3.8.10
pyenv global 3.8.10

# 查看 python 版本
python -V

给pip换源

将pip永久更换走国内清华源(加快pip下载速度):pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

将pip临时更换走公司内部源:

  • 公司内部工具库:pip install -i 公司内部源地址 库名 --upgrade