最开始用python 的时候一直觉得自己的代码没有别人的好看,很容易一个循环语句写的很长很长。看起来特别费劲。其原因就是一开始编写代码的时候没有很好的组织,数据结构不熟悉。常常想着“程序就跑一次,这样应该差不多了”。最终走了不少弯路。还有很多弯路影响更大了,例如办公室的电脑的编辑器缩进是tab,忘记改成空格了;修改程序的时候逗号不小心换成了中文字符的逗号啦。吃过的亏不少。
今天推荐两款 轻量级的工具,从编程开始就养成良好的书写习惯。就是java的程序检查工具 checkstyle 和 python 的检查工具 pylint。
checkstyle 可谓帮我们检查了所有编写规范问题,甚至连变量名大小写的规则都会帮我们检查。如下例子。
charlies:score92 xing$ checkstyle-algs4 Board.java
Running checkstyle on Board.java:
Starting audit...
Board.java:6:17: The instance variable 'N' must start with a lowercase letter and use camelCase. [MemberName]
Board.java:154:13: The local variable 'N' must start with a lowercase letter and use camelCase. [LocalVariableName]
Audit done.
Checkstyle ends with 2 errors.
这里我使用的是算法第四版 这本书提供的checkstyle 检查了Board.java 中可能的书写规范问题。程序发现我变量名 N 是大写的。我们知道JAVA默认规范中只有class的名称才能大写。这个检查细致入微,甚至可以检查到我的空格是否使用不恰当。
对java文件编译后,我们还可以利用另外一个小工具 findbugs,检查潜在的逻辑错误。如果代码通过了这两个程序的检查,那么你的代码一定很规范了。
对于python 我们可以依靠google 的编程规范来编写我们的代码,见这里,见这里。 同时他们推荐了一个类似的检查bug的问题的工具 Pylint。pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less dynamic)语言, 这些bug通常由编译器来捕获. 由于Python的动态特性, 有些警告可能不对. 不过伪告警应该很少.
使用方法也是极其方便: pylint test.py