An Interest In:
Web News this Week
- April 19, 2024
- April 18, 2024
- April 17, 2024
- April 16, 2024
- April 15, 2024
- April 14, 2024
- April 13, 2024
Code Smell 177 - Missing Small Objects
We see small primitive data everywhere
TL;DR: Don't forget to model the smallest ones
Problems
- Primitive obsession
Solutions
find responsibilities for small objects in the MAPPER
Reify them
Context
Since computing early days we map all we see to the familiar primitive data types: Strings, Integers, Collections, etc.
Mapping to dates violates abstraction and fail-fast principles.
in the Wordle TDD Kata, we describe a Wordle word to be different than a String or Char(5), since they don't have the same responsibilities.
Sample Code
Wrong
public class Person { private final String name; public Person(String name) { this.name = name; }}
Right
public class Name { private final String name; public Name(String name) { this.name = name; // Name has its own creation rules, comparison etc. // Might be different than a string }}public class Person { private final Name name; public Person(Name name) { // name is created as a valid one, // we don't need to add validations here this.name = name; }}
Detection
[X] Manual
This is a semantic smell. It is related to design activity
Exceptions
In a very small number of mission-critical systems, we have a tradeoff from abstraction to performance.
This is not the usual case. We do premature optimization not relying on a modern computer and virtual machine optimizations.
As always, we need to stick to evidence in real-world scenarios.
Tags
- Primitive
Conclusion
Finding small objects is a very hard task requiring experience to make a good job and avoid overdesign.
There's no silver bullet in choosing how and when to map something.
Relations
Code Smell 122 - Primitive Obsession
Maxi Contieri Mar 17 2 min read
More Info
How to Create a Wordle with TDD in Javascript
Maxi Contieri Sep 13 16 min read
Disclaimer
Code Smells are just my opinion.
Credits
Photo by Shane Aldendorff on Unsplash
The secret to building large apps is never build large apps. Break your applications into small pieces. Then, assemble those testable, bite-sized pieces into your big application.
Justin Meyer
Software Engineering Great Quotes
Maxi Contieri Dec 28 '20 13 min read
This article is part of the CodeSmell Series.
Original Link: https://dev.to/mcsee/code-smell-177-missing-small-objects-h2j
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To