从表面上看, 写测试代码的好处就是方便测试函数的正确性, 然而, 随着之后代码的编写, 我发现写测试代码所带来的好处不止于此。当有了要为代码编写测试用例的前提条件后, 我在实现某个函数时就约束自己, 这个函数必须要方便编写相应的测试代码。有了这层约束以后, 我发现写出来的代码的质量要比不写测试用例时高, 比如
函数的功能职责更加单一了,换言之, 函数的逻辑更稳定了, 不易产生变动, 因为我不想我辛苦编写的测试代码随着函数的代码的调整而付之一炬。
不会很随意的把代码乱放, 写出来的代码更加整洁,该提取函数时就建新函数, 该内联函数时则删除不必要的函数,在之前, 为了偷懒往往会对这些细节视而不见, 这会加速代码的腐烂。
更早的发现BUG,很多时候, 程序的BUG都是在生产环境中由用户发现,原因很简单, 开发项目的速度和质量这对冤家之间程序员往往会选择前者,此外, 程序员会毫无根据的信任自己写的代码,因此当向程序员反馈BUG时,他们都会保持怀疑的态度。很多时候, 程序员写一个函数通常只给一个特定的输入,运行后发现输出如自己预期那样后就默认这个函数是健康的, 事实上, 当给这个函数另外的输入时, 函数吐出的结果就在预期范围之外, 这便导致了BUG的产生, 个中原因便是对自己直觉盲目的信任, 认为自己的大脑就是一个人肉编译器。 编写测试可以很大程度上的杜绝这类问题
通常,我们会认为编写测试是一件浪费时间的事情, 然后就是一边向别人吹牛一边则啪啪啪的打自己脸。 除此之此, 在开发项目时常常以逻辑不稳定随时需要调整代码为理由拒绝写测试,然而, 当从相反的方向来考虑问题时会发现, 有了测试的约束后,我们会更加仔细和严谨去编写每一个函数 ,逼迫自己更加深入的考虑问题而防止代码走样, 提高代码质量、安全性以及稳定性, 这也是写测试所带来的至关重要的意义。