Back to Glossary
Code Review & Quality

Legacy Code

Existing code that is difficult to change due to lack of tests, poor documentation, outdated technologies, or original developers no longer available.

Definition

Michael Feathers defines legacy code simply as "code without tests" because without tests, changes are risky. Legacy code often has: unclear architecture, missing documentation, deprecated dependencies, complex interdependencies, and accumulated workarounds. However, legacy code is also valuable — it represents working business logic that has been tested in production.

Why It Matters

Most developers spend more time maintaining legacy code than writing new code. Understanding how to safely modify legacy systems is a critical skill. Techniques include: adding characterization tests, strangler fig pattern, and incremental refactoring.

Example

A 15-year-old PHP monolith processes millions in transactions daily. It has no tests, uses deprecated libraries, and the original team left. Developers must add tests before making changes to avoid breaking production.

Related Terms

legacy codewhat is legacy codelegacy systemworking with legacy code

Automate Code Review with diffray

Multi-agent AI system for code review. Automatically finds bugs, security vulnerabilities, and architecture issues.