cover-img

Code Smell 229 - Red Tape

You overcomplicate your code

27 October, 2023

0

0

0

TL;DR: Avoid Accidental complexity and bureaucracy

Problems

  • Accidental Complexity
  • Readability
  • Bijection Fault

Solutions

  1. Asign the responsibilities to real-world objects using the MAPPER

Context

A "red tape" code smell could relate to unnecessary complexity, bureaucracy, or excessive configuration that makes the codebase harder to understand or maintain.

Sample Code

Wrong

class VotingSystem:
def __init__(self, config):
self.config = config

def validate_voter(self, voter_id):
if self.config['voter_verification_enabled']:
# Code to verify the voter's identity goes here

def cast_vote(self, voter_id, candidate):
if self.config['voting_enabled']:
# Code to record the vote goes here

def generate_vote_report(self):
if self.config['generate_report']:
# Code to generate a voting report goes here

def audit_voting_system(self):
if self.config['audit_enabled']:
# Code to perform an audit of the voting system goes here

# ... other voting-related methods ...

# Usage
config = {
'voter_verification_enabled': True,
'voting_enabled': False,
'generate_report': False,
'audit_enabled': True
}

voting_system = VotingSystem(config)

# Voter validation, voting, report generation,
# and auditing are handled based on the configuration.

Right

class VoterVerification:
def verify_voter(self, voter_id):
# Code to verify the voter's identity goes here

class VotingMachine:
def cast_vote(self, voter_id, candidate):
# Code to record the vote goes here

class VoteReporter:
def generate_report(self):
# Code to generate a voting report goes here

class VotingAuditor:
def audit_voting_system(self):
# Code to perform an audit of the voting system goes here

# Usage
voter_verification = VoterVerification()
voting_machine = VotingMachine()
vote_reporter = VoteReporter()
voting_auditor = VotingAuditor()

# Voter verification, vote casting, report generation,
# and auditing are handled separately.

Detection

[X] Semi-Automatic

Some tools can guess you are bloating your objects with unnecessary responsibilities.

Tags

  • Bloaters

Conclusion

The red tape code smell is evident as developers need to navigate the complex configuration to determine which features are active.

This not only adds unnecessary complexity but also increases the likelihood of misconfigurations that could impact the integrity of your system.

Relations

Code Smell 54 - Anchor Boats

Disclaimer

Code Smells are my opinion.

Credits

Photo by the blowup on Unsplash


A Fallacy of Software: If it works, and we don't change anything, it will keep working.

Jessica Kerr

Software Engineering Great Quotes


This article is part of the CodeSmell Series.

How to Find the Stinky Parts of your Code

0

0

0

Maxi Contieri

Buenos Aires, Argentina

🎓Learn something new every day.📆 💻CS software engineer 👷coding👨🏽‍🏫teaching ✍🏾writing 🎨Software Design 🏢SOLID 🌉TDD 👴Legacy 💩Code Smells

More Articles

Showwcase is a professional tech network with over 0 users from over 150 countries. We assist tech professionals in showcasing their unique skills through dedicated profiles and connect them with top global companies for career opportunities.

© Copyright 2024. Showcase Creators Inc. All rights reserved.