程序开发领域，代码中的任何可能导致深层次问题的症状都可以叫做代码异味（Code smell）。通常，在对代码做简短的反馈迭代时，代码异味会暴露出一些深层次的问题，这里的反馈迭代，是指以一种小范围的、可控的方式重构代码。基于这些暴露的问题，人们会进一步的检查设计和代码中是否还存在别的代码异味，然后再做进一步的重构。从负责重构的开发者的角度来看，代码异味可以启发何时重构，如何重构。因此，可以说代码异味推动着重构的进行。该术语似乎由肯特·贝克于90年代后期，在WardsWiki上首次使用。且自从在"Ref