Здесь уже есть несколько ответов, но я хотел бы добавить еще один, поскольку я не думал, что они обязательно объяснят это так хорошо, как могли.
Идея СУХОГО (не повторяйся) заключается вчто в вашем коде приложения вы хотите избежать избыточного или повторяющегося кода.Если у вас есть что-то, что ваш код должен делать несколько раз, у вас должна быть функция или класс, а не повторять похожий код в нескольких местах.
Это довольно известная концепция программирования.
DAMP (Описательные и значимые фразы) - для ваших юнит-тестов.Идея заключается в том, что имена ваших методов модульного тестирования должны быть длинными и описательными - по сути, короткие предложения, описывающие то, что вы тестируете.
Например: testWhenIAddOneAndOneIShouldGetTwo() { .... }
Когда вы читаете DAMPПодобное имя метода, вы должны точно понимать, что автор теста пытался достичь, даже не читая тестовый код (хотя тестовый код также может следовать этой концепции, конечно же, с многословными именами переменных и т. д.).
Это возможно, потому что метод модульного тестирования имеет очень специфический вход и ожидаемый выход, поэтому принцип DAMP хорошо работает для них.Методы в вашем основном коде приложения вряд ли будут достаточно конкретными, чтобы оправдывать подобные имена, особенно если вы написали его с учетом принципа DRY.
DAMP и DRY не противоречат друг другу - они охватываютразличные аспекты написания вашего кода, но, тем не менее, они обычно не используются вместе, потому что методы, написанные с учетом принципа СУХОЙ, будут универсальными и вряд ли будут подходить для очень специфического имени метода.В общем, поэтому, как объяснено выше, код вашего приложения должен быть СУХИМЫМ, а код модульного тестирования - DAMP.
Надеюсь, это поможет объяснить его немного лучше.