August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
重新检查一下计算器程序,看看其中是否有“丑陋”的代码,我们发现:
在加入对'q'、';'和'%'的处理之前,这段代码还不算太坏,但现在变得有些混乱。代码的可读性越差,其中的错误就越难以发现。而这段代码中确实隐藏着一个潜在的bug!我们修改一下代码,令每行代码只对应switch语句的一种情况,并加入适当的注释来帮助代码理解。修改后的Token_stream的get()函数如下所示:
我们当然可以把对每个数字的处理也放在不同的行,但是那样似乎并不能使代码更加清晰,而且导致不能在一屏上显示get()函数的所有代码。理想情况是,每个函数的代码都能全部显示在屏幕的可视区域上——在屏幕之外我们无法看到的代码是最有可能隐藏bug的地方。因此,代码布局是非常重要的。
另外一个值得注意的地方是,我们在程序中用符号常量quit替代了字符'q'。这不但提高了程序的可读性,而且保证我们的编程错误会被编译器捕获——如果我们为quit操作选择的单词与其他单词冲突,将会产生一个编译时错误。
在代码清理阶段,我们有可能意外地引入一些错误。因此,在代码清理之后一定要测试代码的正确性。最好是每做一点改动就测试一次,以便发现错误时你能记起来是做了什么样的改动导致的这个错误。记住:及早测试,经常测试。 ...