代码异味

程序开发领域，代码中的任何可能导致深层次问题的症状都可以叫做代码异味（Code smell）。
通常，在对代码做简短的反馈迭代时，代码异味会暴露出一些深层次的问题，这里的反馈迭代，是指以一种小范围的、可控的方式重构代码。基于这些暴露的问题，人们会进一步的检查设计和代码中是否还存在别的代码异味，然后再做进一步的重构。从负责重构的开发者的角度来看，代码异味可以启发何时重构，如何重构。因此，可以说代码异味推动着重构的进行。
该术语似乎由Kent Beck于90年代后期，在WardsWiki上首次使用。且自从在Refactoring. Improving the Design of Existing Code.被提到过，使用率就大大的提高。代码异味同时也是敏捷开发者常用的术语。
什么是，或者不是代码异味，是一个主观的判断，通常因语言、开发者、开发方法的不同而不同。对于Java开发语言，有些工具，比如Checkstyle、PMD和 FindBugs可以自动检测一些代码异味。