DEV Community

Cover image for Code Smell 114 - Empty Class
Maxi Contieri
Maxi Contieri

Posted on • Updated on • Originally published at

Code Smell 114 - Empty Class

Have you encountered classes without behavior? Classes are their behavior.

TL;DR: Remove all empty classes.



  1. Remove the classes and replace them with objects instead.

  2. If your classes are Anemic Exceptions, remove them.


Many developers still think classes are data repositories.

They couple different behavior concept with returning different data.

Sample Code


class ShopItem { 
  code() { }
  description() { }                 

class BookItem extends ShopItem { 
   code() { return 'book' }
   description() { return 'some book'}     

// concrete Class has no real behavior, just return different 'data'
Enter fullscreen mode Exit fullscreen mode


class ShopItem { 
  constructor(code, description){
    //validate code and description
    this._code = code;
    this._description = description;
  code() { return this._code }
  description() { return this._description }                 
  //Add more functions to avoid anemic classes
  //getters are also code smells, so we need to iterate it

bookItem = new ShopItem('book', 'some book);
//create more items
Enter fullscreen mode Exit fullscreen mode


[X] Automatic

Several linters warn us of empty classes.

We can also make our own scripts using metaprogramming.


  • Behavior


Classes are what they do, their behavior.

Empty classes do nothing.


More Info

-Refactoring 004 - Remove Unhandled Exceptions


Photo by Kelly Sikkema on Unsplash

An error arises from treating object variables (instance variables) as if they were data attributes and then creating your hierarchy based on shared attributes. Always create hierarchies based on shared behaviors, side.

David West

This article is part of the CodeSmell Series.

Top comments (0)