Code Smell 04 - String Abusers

Code Smell 04 - String Abusers

Leader 1 48 116
calendar_todayschedule5 min read

Too much parsing, exploding, regex, strcmp, strpos and string manipulation functions.

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

Problems

  • Complexity
  • Readability
  • Maintainability
  • Lack of abstractions
  • Fragile logic
  • Hidden intent
  • Hard debugging
  • Poor modeling
  • Regex mess

Solutions

1) Work with objects instead.

2) Replace strings with data structures dealing with object relations.

3) Go back to Perl :)

4) identify bijection problems between real objects and the strings.

Examples

  • Serializers

  • Parsers

Context

When you abuse strings, you try to represent structured concepts with plain text.

You parse, explode, and regex your way around instead of modeling the domain.

This creates fragile code that breaks with small input changes.

Sample Code

Wrong

<?php

$schoolDescription = 'College of Springfield';

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

$school = preg_split('/[\s,]+/', $schoolDescription, 3)[0]; 
//'College'
<?

class School {
    private $name;
    private $location;

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

Detection

[X] Semi-Automatic

Automated detection is not easy.

If your code uses too many string functions, linters can trigger a warning.

Tags ️

  • Primitive Obsession

Level

[X] Beginner

Why the Bijection Is Important ️

You must mirror the real-world domain in your code.

When you flatten roles, addresses, or money into raw strings, you lose control.

This mismatch leads to errors, duplication, and weak models.

One-to-one mapping between domain and code gives you clarity and robustness.

AI Generation

AI generators often produce string-abusing code because it looks shorter and easier.

The generated solution can be correct for toy cases but fragile in real systems.

AI Detection

You can instruct AI tools to replace string checks with domain objects.

With clear prompts, AI can spot and fix string abuse effectively.

Try Them!

Remember: AI Assistants make lots of mistakes

Suggested Prompt: Reify Strings to objects

Without Proper Instructions With Specific Instructions
ChatGPT ChatGPT
Claude Claude
Perplexity Perplexity
Copilot Copilot
You You
Gemini Gemini
DeepSeek DeepSeek
Meta AI Meta AI
Grok Grok
Qwen Qwen

Conclusion

Don't abuse strings.

Favor real objects.

Add missing protocol to distinguish them from raw strings.

Relations ❤️

https://maximilianocontieri.com/code-smell-122-primitive-obsession

https://maximilianocontieri.com/code-smell-121-string-validations

https://maximilianocontieri.com/code-smell-295-string-concatenation

More Information

Credits

Photo by Nathaniel Shuman on Unsplash


This article is part of the CodeSmell Series.

https://maximilianocontieri.com/how-to-find-the-stinky-parts-of-your-code

1 Comment

0 votes
🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

Code Smell 05 - Comment Abusers

Maxi Contieri - Dec 2, 2025

Code Smell 320 - Vanity Coverage

Maxi Contieri - Jun 23

Code Smell 319 - Hardcoded Stateless Properties

Maxi Contieri - Apr 9

Code Smell 17 - Global Functions

Maxi Contieri - Feb 28

Code Smell 16 - Ripple Effect

Maxi Contieri - Feb 19
chevron_left
6.7k Points165 Badges
Buenos Aires, Argentinamaximilianocontieri.com
69Posts
4Comments
5Connections
Learn something new every day
Software Engineer and author of Clean Code Cookbook (https://amzn.to/4... Show more

Related Jobs

View all jobs →

Commenters (This Week)

1 comment
1 comment
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!