测试自己 - 通过重构提升自己


实践重构不仅仅是改进我们的代码,它还有助于我们更好地推理我们的代码。
让我们的代码变得更好似乎不会让我们变得更好,但这里面还是有因果关系,虽然不是很明显。
我遇到的最有趣的想法之一是共享空间城市设计。在共享空间环境中,规划者可以移除交通信号,路和街道,使道路和步行区更安全。但是问题关键是不确定性,因为去除了交通信号,当你开车或步行时,你必须减速并小心。只有小心才能带来安全。
当我学会如何编程时,我注意到了这个变异。我自学了C作为第一门编程语言。今天我们对C进行了相当多的丑化,但当时我注意到学习C首先给了我一个优势。当我后来参加Pascal的入门编程课程时,我感到震惊的是 - 在学期的后期 - 我看到其他学生出现数组索引越界的运行错误。我用相同的语言做了几个月相同的练习,但我从未见过这个错误。在C中,当您使用指针索引越界时,您可能会遇到系统崩溃,或者更糟糕的是:只是默默发生故障。在追逐问题解决几次之后,你就学会了在遍历数组期间不会发生索引指针越界的问题。
让我们回到重构。每当您对代码进行一些小改动并且即将运行测试时,首先要问自己是否会失败?
我们应该知道我们的测试会在运行之前通过。我们大多数时候应该是正确的,但是万一发生错误?
好消息是,你做得越多,就越能快速了解改变结构所采取的步骤。你可以安全地自由创建所有东西  ,这些东西对你来说都是自动的。通过测试自己,我们在技能上增长。
这些是重构的好时机。如果你有机会,可以看看Arlo Belshee的可证明重构,Llewelyn Falco使用前缀提交消息的做法,以及Kent Beck对缩放环境Limbo的看法,其中所有变化都很小且可知。这些都是增长我们和我们的代码的相关想法。