第一次写完整的python程序,当时死赶活赶着急着实现功能,现在到了秋后算账的时候了,顺便攒攒经验,给下次编程做准备。
代码审查第一步——代码规范性检查
其实python也开源了很多自己的PEP8规范,可以去阅读学习,也可以借用工具去检查代码是否符合规范。
本次筛查使用工具:pylint
使用步骤:
A、安装pylint :pip install pylint
B、输出结果:进入cmd窗口,切换到待评估脚本(xxxx.py)所在目录,pylint -r y xxxx.py > xxxx.txt ,解释下,这里的-r表示是否输出到本地,y表示yes,xxxx.txt为评估结果输出到本地的文档名称,当然,也可以选择不用txt格式,还有其他格式;
如果不想对每个脚本单独评估,也可以对整个包进行评估,前提包下面必须要有__init__.py模块,操作步骤为进入cmd,切换到待评估包(xxxx)所在目录,pylint -r y xxxx > xxxx.txt
如果想增加屏蔽指标项,譬如屏蔽未按规定样式命名,--disable=invalid-name:pylint --disable=invalid-name -r y xxxx > xxxx.txt
如果想细化到每个错误类型的id,pylint xxxx --reports=y --output-format=parseable >xxxx.txt
关于pylint,有很好的一篇博客可以参照:
重点来看我的代码有哪些不规范的地方:
惯例类(C):1)缺少模块注释,缺少类注释,缺少方法注释,缺少函数注释;
2)命名不合规范:常量命名形式——UPPER_CASE ,变量、类属性、方法命名形式——snake_case,类命名形式——CamelClass;
3)空格,可以使用code——reformat code解决这一问题;
4)行代码过长(pycharm上会有一条竖线提醒线);
5)导入包时按照音序排列(不过这一部分不一定完全对,比如导入路径追加..的时候,就需要放在前面)
警告类(W):1)return值的名称与方法名相同,会建议修改return值的名称;
2)变量未使用,比如捕获异常时的会把异常命名为e,但接下来的代码中并没有使用该异常e;
重构类(C):重构类相对更有价值
1)if... true else.. false,可以直接用bool表达式得到true和false;
2)如果if 、elif和else (一定要有)每个分支都有return值,并且每个分支下return值使用同一个变量名时,则可以将各分支下的return值合并到最外层成为一个 return值;
3)类或方法里有太多入参;太多分支(比如while下面嵌套for循环,for循环下面又嵌套几层 if);
4)方法没有使用类中的任何self.XX,那么该方法可能是独立的函数,应该从类中移出。
其他两类ERROR和FATAL ERROR,本次代码检查未发现。