Code Smell 04 - String Abusers
Maxi Contieri
Posted on October 23, 2020
Too many parsing, exploding, regex, strcomp, strpos and string manipulation functions.
TL;DR: Use real abstractions and real objects instead of string accidental manipulation.
Problems
- Complexity
- Readability
- Maintainability
- Lack of Abstractions
Solutions
1) Work with objects instead.
2) Replace strings with data structures dealing with object relations.
3) Go back to Perl :)
4) Find Bijection problems between real objects and the strings.
Examples
-Serializers
-Parsers
Sample Code
Wrong
<?
$schoolDescription = 'College of Springfield';
preg_match('/[^ ]*$/', $schoolDescription, $results);
$location = $results[0]; // $location = 'Springfield'.
$school = preg_split('/[\s,]+/', $schoolDescription, 3)[0]; //'College'
Right
<?
class School {
private $name;
private $location;
function description() {
return $this->name . ' of ' . $this->location->name;
}
}
Detection
Automated detection is not easy. If code uses too many string functions, it can trigger a warning.
Relations
- Primitive Obsession
More info
Tags
- Mapping
Conclusion
Don't abuse strings. Favor real objects. Find absent protocol to distinguish them from strings.
Credits
Photo by Nathaniel Shuman on Unsplash
This article is part of the CodeSmell Series.
How to Find the Stinky parts of your Code
Maxi Contieri ・ May 21 '21
Last update: 2021/06/03
Posted on October 23, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.