Code Smells
Code Smells / Bloaters / Data Clump

Data Clump
Data clumps are sets of related primitives (eg. 1
, 3.14
, "Hello"
, False
) that always appear together. Data Clumps can be avoided by encapsulating them together in a class.
from math import sqrt
# Code smell
x_coordinate = 4
y_coordinate = -7
z_coordinate = 43
distance = sqrt(x_coordinate**2 + y_coordinate**2 + z_coordinate**2) # Pythagorean theorem
print(distance)
# Improved
class Coordinates:
def __init__(self, x_coordinate, y_coordinate, z_coordinate):
self.x_coordinate = x_coordinate
self.y_coordinate = y_coordinate
self.z_coordinate = z_coordinate
def distance(self):
return sqrt(self.x_coordinate**2 + self.y_coordinate**2 + self.z_coordinate**2) # Pythagorean theorem
my_coordinates = Coordinates(4, -7, 43)
print(my_coordinates.distance())
The problem with Data Clumps, is that it is not easy to centrally control their behaviour. In the example above, if we wanted to restrict y_coordinate
to positive numbers only, we may need to edit the code in many places, leading to Shotgun Surgery.
Data Clumps are also often Primitive Obsessions.
Books about code smells
Learn to write better smelling code.

Refactoring: Improving the Design of Existing Code

Code smells: A Predictor of Remarkable Quality Improvement

Clean Code: A Handbook of Agile Software Craftsmanship
I receive a commission on sales made from the above affiliate links.