为了账号安全,请及时绑定邮箱和手机立即绑定

在讨论单元测试时,“DAMP not DRY”是什么意思?

在讨论单元测试时,“DAMP not DRY”是什么意思?

阿晨1998 2019-07-23 16:22:19
在讨论单元测试时,“DAMP not DRY”是什么意思?我听说有人说单元测试(例如nUnit,jUnit,xUnit)应该是DAMP未干(例如,单元测试应该包含“潮湿代码”而不是“干代码”)他们在说什么?
查看完整描述

3 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

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

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

DAMP(描述性和有意义的短语)促进了代码的可读性

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

DRY(不要重复自己)促进代码的正交性。

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

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

测试通常包含固有的重复,因为它们一遍又一遍地测试相同的东西,只是输入值或设置代码略有不同。但是,与生产代码不同,此复制通常仅与单个测试夹具/文件中的方案隔离。因此,重复是最小和明显的,这意味着它比其他类型的重复对项目造成的风险更小。

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

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

作为一个原则,在生产代码中支持DRY,在测试代码中支持DAMP。虽然两者同样重要,但只要有一点点智慧,你就可以为自己提供平衡。


查看完整回答
反对 回复 2019-07-23
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

DAMP - 描述性和有意义的短语。

“DAMP not DRY”重视代码重用的可读性。在测试用例中DAMP不干的想法是测试应该易于理解,即使这意味着测试用例有时会重复代码。

另请参阅单元测试中是否可以容忍重复代码?关于这一观点的优点的一些讨论。

它可能是由Jay Fields创建的,与Domain Specific Languages相关。


查看完整回答
反对 回复 2019-07-23
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

“干”是“不要重复自己”

这个术语用于告诉人们编写可重用的代码,这样您就不会一遍又一遍地编写类似的代码。

“DAMP”是“描述性和有意义的短语”。

这个术语旨在告诉您编写代码,这些代码可以让正在查看它的人轻松理解。如果您遵循这一原则,您将拥有长而描述性的变量和函数名称等。


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 787 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信