Testing 好的测试是否支持草率的编码?

Testing 好的测试是否支持草率的编码?,testing,code-reuse,Testing,Code Reuse,假设您正在编写代码,您遇到了一个简单代码恢复的机会,例如,将一段公共代码提取到一个可访问的位置,如实用程序类或基类。您可能会想,我知道这样做很好,但我现在必须完成这项工作,如果我需要更改此代码,而忘记在其他地方更改它,我的测试框架会让我知道 换句话说,您可以让您或其他开发人员编写的很棒的测试来提醒您在其他地方也更改代码 这是我们自己或其他开发人员可能遇到的合理问题吗?我不使用测试作为查找需要更改的代码的第一选择。我将使用IDE的搜索或重构功能,查找所有调用该方法的地方 这些测试只是一个很好的补充

假设您正在编写代码,您遇到了一个简单代码恢复的机会,例如,将一段公共代码提取到一个可访问的位置,如实用程序类或基类。您可能会想,我知道这样做很好,但我现在必须完成这项工作,如果我需要更改此代码,而忘记在其他地方更改它,我的测试框架会让我知道

换句话说,您可以让您或其他开发人员编写的很棒的测试来提醒您在其他地方也更改代码


这是我们自己或其他开发人员可能遇到的合理问题吗?

我不使用测试作为查找需要更改的代码的第一选择。我将使用IDE的搜索或重构功能,查找所有调用该方法的地方


这些测试只是一个很好的补充,以防我不小心疏忽大意或不小心引入了一个bug。测试从一开始就不会让我马虎,一旦我认为我完成了测试,它们就会让我放心。

我不会将测试作为查找需要更改的代码的第一选择。我将使用IDE的搜索或重构功能,查找所有调用该方法的地方


这些测试只是一个很好的补充,以防我不小心疏忽大意或不小心引入了一个bug。测试从一开始就不会让我变得邋遢,一旦我认为我完成了,他们就会让我放心。

我会说,好的测试可以让你修复邋遢的编码。

我会说,好的测试可以让你修复邋遢的编码。

你当然可以在有测试或没有测试的情况下编写令人难以置信的邋遢代码。单元测试使它稍微容易一些,但只能在短期内完成。

无论是否进行测试,您都可以编写令人难以置信的草率代码。单元测试使它稍微容易一些,但只能在短期内完成。

如果测试是好的,代码是草率的,或者通过了测试,那么一切都是好的。拥有好的代码会很好,但是草率的工作代码比好的坏代码要好。

如果测试很好,代码草率或通过测试,一切都好。拥有好的代码固然不错,但草率的工作代码比好的坏代码要好。

你是在问单元测试是否鼓励你依赖它们作为待办事项列表的方法?是的,但我不认为这是草率的编码。毕竟,从单元测试失败开始,编写测试代码;如果您重构了一些代码,然后再次为测试编写代码,那么这不是草率的编码,而是在做您应该做的事情


我认为单元测试的问题很简单,你不能涵盖单元测试中的每一个细节,有时人们会认为一个工作测试意味着一个工作应用程序,这是不正确的。

你在问单元测试是否鼓励你依赖它们作为待办事项列表的方法?是的,但我不认为这是草率的编码。毕竟,从单元测试失败开始,编写测试代码;如果您重构了一些代码,然后再次为测试编写代码,那么这不是草率的编码,而是在做您应该做的事情


我认为单元测试的问题很简单,你不能涵盖单元测试中的每一个细节,有时人们认为一个工作测试意味着一个工作应用程序,这是不正确的。

如果你在代码中的两个地方复制了一组逻辑,这是开发人员能做的最糟糕的事情,那么您可能也有不一致的测试

任何程序员能做的最重要的工作就是无情地重构代码,消除所有重复。这几乎总是在一次迭代中显示出好处


为什么你会认为如果你在两个地方复制了一个错误,那么你的测试会更好呢?

如果你在代码的两个地方复制了一组逻辑,这是开发人员能做的最糟糕的事情,那么你可能也有不一致的测试

任何程序员能做的最重要的工作就是无情地重构代码,消除所有重复。这几乎总是在一次迭代中显示出好处


为什么您会认为如果您在两个地方复制了一个错误,那么您的测试会更好呢?

在您提供的示例中,好的测试实际上使您能够实现草率的设计,但是根据我的经验,坏的测试不会阻止您这样做

你的论点中的谬论围绕着这样一个前提,即现在完成这项工作意味着你将通过实施草率的设计来节省时间。事实上,无论你的测试是否良好,你都要承担技术债务。无论您是否有一个好的测试框架来提醒您,对代码进行更改现在是一项复杂得多的任务

虽然不成熟的代码可以很好地工作 完全为公众所接受 客户,如果数量过多,将导致 无法存储的程序,导致 极端专业化 程序员 最后是一个不灵活的产品。 -


良好测试实践的优势可能在于允许您以某种程度的安全性承担债务。只要您继续意识到,由于您的选择,代码的这一部分现在很薄弱,那么它可能是值得权衡的——您可以更快地交付产品,以更高的债务为代价,从而降低短期内出现错误的风险。

在您提供的示例中,好的测试实际上使您能够实现草率的设计,但是根据我的经验,坏的测试不会阻止您这样做

你的论点中的谬论围绕着这样一个前提,即现在完成这项工作意味着你将通过实施草率的设计来节省时间。事实上,无论你的测试是否良好,你都要承担技术债务。无论您是否有一个好的测试框架来提醒您,对代码进行更改现在是一项复杂得多的任务

虽然不成熟的代码可以很好地工作 完全为公众所接受 客户,如果数量过多,将导致 无法存储的程序,导致 程序员的极端专业化 最后是一个不灵活的产品。 -


良好测试实践的优势可能在于允许您以某种程度的安全性承担债务。只要您继续意识到,由于您的选择,代码的这一方面现在很薄弱,那么它可能是值得权衡的——您以更高的债务为代价更快地交付产品,因此,在短期内产生错误的风险较低。

在我看来,在您的示例中,邋遢的开发人员和邋遢的编码实践导致了邋遢的代码。您所描述的测试将防止草率的代码走得太远。

在我看来,草率的开发人员和草率的编码实践是导致示例中草率代码的原因。您描述的测试将防止草率的代码走得太远。

好吧,有一些奇怪的情况,当足够的元编程使您的IDE搜索功能变得不那么有用时。尽管你可能会争辩说,也许你的软件过于依赖元编程。如果你写了一个宏迷宫,那么你的IDE可能找不到一个方法的所有调用方。但是一个简单的老版本Find All on:methodName应该仍然可以找到它。好吧,有一些奇怪的情况,当足够多的元编程使您的IDE搜索功能变得不那么有用时。尽管你可能会争辩说,也许你的软件过于依赖元编程。如果你写了一个宏迷宫,那么你的IDE可能找不到一个方法的所有调用方。但是一个简单的老发现:methodName应该仍然可以找到它。我不能说我理解你认为的问题是什么。听起来好像你所描述的是一个加号。你觉得自己有能力修改糟糕的代码,测试会提醒你,如果你把代码搞砸了,我不能说我理解你认为的问题是什么。听起来好像你所描述的是一个加号。你会觉得自己有能力修改糟糕的代码,测试会提醒你是否把代码搞砸了。