gpt4 book ai didi

unit-testing - 在谈论单元测试时 “DAMP not DRY” 是什么意思?

转载 作者:行者123 更新时间:2023-12-03 03:59:55 24 4
gpt4 key购买 nike

我听到有人说单元测试(例如 nUnit、jUnit、xUnit)应该是

DAMP not DRY

(例如,单元测试应包含“潮湿代码”而不是“干燥代码”)

他们在说什么?

最佳答案

这是一种平衡,而不是矛盾

DAMP 和 DRY 并不矛盾,相反,它们平衡了代码可维护性的两个不同方面。可维护的代码(易于更改的代码)是这里的最终目标。

DAMP(描述性且有意义的短语)提高代码的可读性

要维护代码,首先需要理解代码。要理解它,你必须阅读它。考虑一下您花费了多少时间阅读代码。很多。DAMP 通过减少阅读和理解代码所需的时间来提高可维护性。

DRY(不要重复自己)促进 orthogonality 代码。

删除重复可以确保系统中的每个概念在代码中都有一个权威的表示。对单个业务概念的更改会导致对代码的单个更改。 DRY 通过将更改(风险)隔离到系统中必须更改的部分来提高可维护性。

那么,为什么重复在测试中更容易被接受?

测试通常包含固有的重复,因为它们一遍又一遍地测试相同的东西,只是输入值或设置代码略有不同。然而,与生产代码不同,这种重复通常仅与单个测试装置/文件中的场景隔离。因此,重复是最小且明显的,这意味着与其他类型的重复相比,它给项目带来的风险更小。

此外,删除这种重复会降低测试的可读性。以前在每个测试中重复的细节现在隐藏在一些新方法或类中。为了全面了解测试,您现在必须在心里将所有这些部分重新组合在一起。

因此,由于测试代码重复通常带来的风险较小,并且提高了可读性,因此很容易看出它如何被认为是可接受的。

原则上,在生产代码中支持 DRY,在测试代码中支持 DAMP。虽然两者同样重要,但只要有一点智慧,您就可以扭转平衡,对您有利。

关于unit-testing - 在谈论单元测试时 “DAMP not DRY” 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6453235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com