我在模块还没认全,元类、类方法和静态方法的区别、装饰器写的还不溜等还不懂的时候,就开始注意让写的代码尽量Pythonic和符合PEP8标准。
到现在,基本手写的都是符合标准的Python代码。我写代码力求如下几点:
1. 简单,调用链简单,不用写注释,同事看我代码,除了我的命名比较简陋不高大上以外,应该没有难度。
2. 不炫技。力求粗暴实现功能,只在合适的地方用合适的方法。
3. 不给其他同事机会吐槽。除了变量命名偶尔会被其他同事鄙视以外,一般很少有人对我的代码抽象能力,性能提供评价意见。
4. 时间允许情况下尽量把代码写完美。一般我的代码都是merge后就不动了,因为没啥可重构的机会... 除非有BUG。哦,我的BUG数量应该是很少的。
这不是一个自吹自擂的答案。
我和我们组在控制代码质量上面做了很多工作,上段时间我写了篇专栏 保证代码质量二三事 - Python之美 - 知乎专栏 ,BTW,dennis还打赏了5块钱(ÒωÓױ)。
作为一个过来人,我一定要给关注了和看这个问题的同学提点经验。
首先看一下我刚到豆瓣第二周提的一个PR来给大家乐呵一下:
/>
这个页面来着豆瓣自己造的团队协作工具 CODE(Douban CODE)。这个PR包含9百多行代码,但是其中包含了700多行thirft自动生成的。 看一下评论数「164」,感受下一个觉得自己代码写的不错的人,被团队其他人这么吐,我的心理阴影。
为什么会造成这么多呢:
1. 豆瓣有一些工程上的习惯甚至黑魔法,团队有自己的规范。
2. 代码写的不好。
3. 来豆瓣前我是一路自学的野路子,我还算对自己写的代码要求高,但是好多细节上既有理解问题也有代码实现的问题。
那么,假如你现在对自己很放纵,但是还挺有追求希望去更好的团队,到更高的平台,防止遇到我们这些人被喷的第二天不想去上班。如下编程习惯一定要有:
1. PEP8。 这个大家都知道了,在我们组,PEP8不过你的PR都基本没人理,吐都懒得吐。但是PEP8里的要求还挺多,怎么办呢?没办法,熟能生巧尔。推荐看 PEP8: The Style Guide for Python Code , requests作者做的,更友好和直观。不熟的时候除了在终端执行下pycodestyle(也就是原来的pep8),还可以给自己的编辑器配上一些自动做PEP8检查的插件。
2. Pythonic。写程序最大的特点就是你可以用多种方法实现同一个功能,但是我能分辨出来那个更Pythonic,那个明显是XX语言转型过来的程序员写的。一般只有一种是最优解,代码最简练执行效率也最高,这个也没啥办法,就是要靠你日常的搜集和自己的不断提高。我现在翻看2年前的代码觉得不忍直视,希望2年后看今天自己写的代码也有这种感觉 。
3. 搜索能力。你没有能力和精力完成所有的事情,有些时候需要去找答案,至少是找个灵感。所以学习从Google、Github、Stackoverflow等网站找到自己需要的东西是一个很好的习惯,以后你会感谢自己这个好习惯。
4. 善用Python标准库。很多功能的最佳实践其实在标准库中,不要一味的自己吭哧吭哧造,造多了你会发现很多都无意义,浪费了时间甚至把你带偏了。
5. 找到一整套完成工作的最佳流程。这个有点大,其实就是配置一个趁手的编辑器,俺强推spacemacs,多花时间用好它;找到一个调试bug的方式,出现问题你要有一系列定位问题,跟踪问题,解决问题的方案,让你非常快的完成工作,而不是漫无目的的每次看心情去debug,必须有「套路」。
6. 尽能力熟悉工作中常用的工具和项目。比如用Flask,有空读读它的源码,这样出了问题,会对你找到原因很有帮助,我现在经常受益于这条。没看过源码就敢在产品线用的人都是「银才」。
欢迎关注本人的微信公众号获取更多Python相关的内容(也可以直接搜索「Python之美」):