关于编写高质量的Python代码有感

来源:互联网 发布:海岛奇兵火箭炮手数据 编辑:程序博客网 时间:2024/05/16 06:21
最近在整理新项目在Robot上的模块级测试项目的应用库,真的是感慨芬兰的员工的代码质量真的让国内的人汗颜。设计简洁,代码高效优美,不仅仅为了完成当前的工作,为未来的接口也做了适当的设计。

其实一段代码既可以为了完成任务草草完事,也可以精益求精,完全取决于一个程序员是否对自己有要求。记得在之前的测试开发项目组,曾经做过一个脚本开发的统一模板,目的为了更好的提高单个module的质量,同时方便被其他module函数重用。

今天看Robot Framework的源码,才知道什么才是高质量的开源代码,每一个函数和类的设计都尽可能的清晰和简单,此外还需要开率代码的以下单个特性:可测性,封装性,兼容性。

可测性:
Python本身有很好用的单元测试库,但是最好在每个模块内部都进行必要的简单测试。因此在'__main__'判断的条件分支内可以区分运行测试代码或者被其他模块调用。
常见的Main函数入口为例说明如下:
# Check if running as a program
if __name__ == '__main__':
    # Always run testing or examples for current module
    statements
else:
    # call by other modules
        statements for who import your library
当然,这样是为了编写的模块被其他模块调用而设计的。如果你仅仅是单独的模块应用大可不必这样,这完全取决于你的场景。但是话说回来,我们每一段代码如果都考虑到未来的扩展性和易用性,这样才是高质量的代码。

封装性:
Python编码必须要考虑到Module和Packege的封装性,不应该把所有的函数和数据都对外暴露。
举例开说,从封装性角度,适当的考虑使用'__all__'变量也是非常好的习惯:
#
__all__ = [ 'function_name_or_parameter_1', 'function_name_or_parameter_2']

兼容性:
最常遇到的兼容性问题包括版本兼容性和系统兼容性。下面以版本兼容性为例说明,如何编写更加健壮的代码:
try:
    from urllib.request import urlopen # Python 3
except ImportError:
    from urllib2 import urlopen # Python 2
   
u = urlopen("ftp://username:password@somehostname/somefile")
contents = u.read()

对于常见的一般的应用,做到这三点基本上可以保证代码的质量。但是如果对于较大的Python编写的项目,还需要考虑更多的因素,毕竟Python从语法的严谨性上没有C++/Java那么好,还有很多的隐式属性会对初学者有很多的影响,因此想要写出好的Python库或者工具,还需要不断的读有些的开源代码总结经验和教训。


0 0