forgetting to check a type
这没什么意义。你很少需要“检查”一个类型。你只需运行单元测试,如果你提供了错误的类型对象,事情就会失败。根据我的经验,你不需要“检查”太多。在trying to call an attribute and
getting the NoneType (or any other)
has no attribute x error.
意外的None是一个普通的老bug。80%的时候,我省略了return。单元测试总是揭示这些。在
在剩下的那些,80%的时间里,它们是普通的老错误,因为“早期退出”会返回None,因为有人写了一个不完整的return语句。这些if foo: return结构很容易通过单元测试检测出来。在某些情况下,它们应该是if foo: return somethingMeaningful,而在其他情况下,它们应该是{}。在
其余的都是误读API的错误。通常,mutator函数不会返回任何内容。有时候我会忘记。单元测试很快就能找到这些,因为基本上,没有什么是正确的。在
这很好地涵盖了“意外的None”案例。易于单元测试。大多数错误都涉及到为一些非常明显的错误编写测试:错误的返回;未能引发异常。在
其他的“没有属性X”错误是使用了完全错误的类型的错误。这要么是非常错误的赋值语句,要么是非常错误的函数(或方法)调用。在单元测试期间,它们总是精心地失败,只需要很少的努力就可以修复。在A lot of them are pretty harmless but if not handled correctly they can bring down your entire app/process/etc.
嗯。。。无害的?如果是一个bug,我祈祷它能尽快关闭我的整个应用程序,这样我就能找到它。一个不会使我的应用程序崩溃的错误是可以想象到的最可怕的情况。”“无害”不是一个我会用的词来形容一个不能使我的应用程序崩溃的错误。在