看标题就知道要求了,统计代码行数。
Kata中要求统计Java的代码行数,我手上没有Java代码,用Python代码测试了一下,原理是一样的。
下面是不算代码的行:
- 空行
- 只有空白字符的,比如制表符、空格
- 以//开头的注释行
- 被/../包裹的注释块
注意:注释块不能嵌套,也就是说不会出现/..../..../..../这样的情况。
代码
直接上代码:
def countCodeLines(filename):
result = 0
inComment = False
with open(filename) as f:
for line in f.readlines():
temp = line.strip()
if not temp:
continue
if temp.startswith("//"):
continue
if temp.startswith("/*"):
inComment = True
if temp.endswith("*/"):
inComment = False
continue
if inComment:
if temp.endswith("*/"):
inComment = False
continue
result += 1
return result
print countCodeLines("9.py")
非常简单是吧,多亏Python的strip()函数,它可以过滤掉首尾的空白符。
有一个重点就是inComment变量,这个用来标记当前是否在代码块中,由于规则说明不能嵌套,所以这里只可能有一层。如果可以嵌套的话,这个变量应该用来记录当前层数,从而判断是否在代码块中。
这次的Kata比较简单,大家也可以动手试一试,只要美化一下输出结果就可以做出一个很不错的小工具了。