在我当前的项目(一个用C ++编写的游戏)中,我决定在开发过程中将100%使用“测试驱动开发”。
就代码质量而言,这很棒。我的代码从未设计得那么好或没有漏洞。当我查看一年前在项目开始时编写的代码时,我并不畏缩,而且我对如何组织事物有了更好的了解,不仅可以更容易测试,而且可以更容易实现和使用。 。
但是...我开始这个项目已经一年了。当然,我只能在业余时间处理它,但是与我以前相比,TDD仍然使我的速度大大降低。我读到,随着时间的流逝,开发速度的降低会越来越好,而且我确实确实比以前更容易进行测试,但是我已经进行了一年,而且我仍在努力。
每当我考虑需要执行的下一步时,就必须每次都停下来思考如何为它编写测试,以便允许我编写实际的代码。有时我会被困上几个小时,确切地知道我要编写什么代码,却不知道如何将其分解得足够细致,以至于无法完全被测试覆盖。其他时候,我会迅速考虑十几个测试,并花一个小时编写测试,以覆盖一小部分真实的代码,而这些代码原本要花几分钟才能编写。
或者,在完成第50次测试以涵盖游戏中的特定实体及其创建和使用的各个方面之后,我查看了我的待办事项清单,看到了下一个要编码的实体,并为写作而大吃一惊。另进行50次类似测试以使其得以实施。
到了关键点,回顾去年的进展,我正考虑放弃TDD,以“完成该死的项目”。但是,放弃它随附的代码质量并不是我所期望的。恐怕如果我停止编写测试,那么我将失去使代码如此模块化和可测试的习惯。
我是否可能在做错事而仍然如此缓慢?是否有其他选择可以在不完全丧失收益的情况下提高生产率?TAD?较少的测试范围?其他人如何在不破坏所有生产力和动力的情况下在TDD中生存?