Code Smell 27 - Associative Arrays

Subscribe to my newsletter and never miss my upcoming articles

[Key, values], magic, fast, malleable and error prune.


  • Coupling

  • Information Hiding

  • Code Duplication

  • Fail Fast

  • Integrity


  1. Reify objects

  2. Create cohesive small objects

  3. Don't leave them anemic, find their cohesive relations.

Sample Code




Degrees deserves reification

Many people suffer from primitive obsession and believe this is over design. Designing software is about making decisions and comparing trade-offs. The performance argument is not valid nowadays since modern virtual machines can efficiently deal with small short-lived objects.


We cannot forbid Associative Arrays since they are very good as a first approach.

They will be fine for exporting data, serialization, persistence and other accidental implementation issues.

We should avoid them on our systems.


  • Primitive


When creating objects we must not think of them as data. This is a common misconception.

We should stay loyal to our Bijection and discover real world objects.

Most associative arrays have cohesion and represent real world entities, and we must treat them as first class objects.



Photo by Melissa Askew on Unsplash

There’s nothing more permanent than a temporary hack.

Kyle Simpson

This article is part of the CodeSmell Series.

No Comments Yet