DEV Community

Cover image for Code Smell 49 - Caches
Maxi Contieri ⭐⭐⭐
Maxi Contieri ⭐⭐⭐

Posted on • Updated on • Originally published at


Code Smell 49 - Caches

Caches are sexy. They are a one-night stand. We need to avoid them in a long-term relationship.


  • Coupling

  • Testability

  • Cache invalidation.

  • Maintainability

  • Premature Optimization

  • Erratic Behavior

  • Lack of transparency

  • Non-Deterministic behavior


  1. If you have a conclusive benchmark and are willing to pay for some coupling: Put an object in the middle.

  2. Unit test all your invalidation scenarios. Experience shows we face them in an incremental way.

  3. Look for a real world cache metaphor and model it.

Sample Code




This is a design smell.

It will be difficult to enforce by policy.


  • Premature Optimization


Caches should be functional and intelligent

In this way we can manage invalidation.

General purpose caches are suitable only for low level objects like operating systems, files and streams.

We shouldn't cache domain objects.

This page is hosted on a cached website.


More Info

Common Cache Usages

Caching Patterns


Photo by Aimee Vogelsang on Unsplash

There are only two hard things in Computer Science: cache invalidation and naming things.

Phil Karlton

Top comments (0)

50 CLI Tools You Can't Live Without

The top 50 must-have CLI tools, including some scripts to help you automate the installation and updating of these tools on various systems/distros.