DEV Community

Cover image for Code Smell 04 - String Abusers
Maxi Contieri ⭐⭐⭐
Maxi Contieri ⭐⭐⭐

Posted on • Updated on • Originally published at


Code Smell 04 - String Abusers

Too many parsing, exploding, regex, strcomp, strpos and string manipulation functions.

TL;DR: Use real abstractions and real objects instead of string accidental manipulation.


  • Complexity
  • Readability
  • Maintainability
  • Lack of Abstractions


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.




Sample Code



$schoolDescription = 'College of Springfield';

preg_match('/[^ ]*$/', $schoolDescription, $results);
$location = $results[0]; // $location = 'Springfield'.

$school = preg_split('/[\s,]+/', $schoolDescription, 3)[0]; //'College'
Enter fullscreen mode Exit fullscreen mode



class School {

    private $name;
    private $location;

    function description() {
        return $this->name . ' of ' . $this->location->name;

Enter fullscreen mode Exit fullscreen mode


Automated detection is not easy. If code uses too many string functions, it can trigger a warning.


  • Primitive Obsession

More info


  • Mapping


Don't abuse strings. Favor real objects. Find absent protocol to distinguish them from strings.


Photo by Nathaniel Shuman on Unsplash

This article is part of the CodeSmell Series.

Last update: 2021/06/03

Top comments (0)

Timeless DEV post...

Git Concepts I Wish I Knew Years Ago

The most used technology by developers is not Javascript.

It's not Python or HTML.

It hardly even gets mentioned in interviews or listed as a pre-requisite for jobs.

I'm talking about Git and version control of course.

One does not simply learn git