paint-brush
Code Smell 238 - Dealing With Entangled Codeby@mcsee
392 reads
392 reads

Code Smell 238 - Dealing With Entangled Code

by Maximiliano ContieriJanuary 22nd, 2024
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Don't mix your train of thought: Improve your Python code's readability and scoping by avoiding entanglements. Learn how to move related code close together, extract methods, and refactor effectively. Address common problems and enhance your Python programming skills for better code structure and maintainability.
featured image - Code Smell 238 - Dealing With Entangled Code
Maximiliano Contieri HackerNoon profile picture

You execute code. Move to the other stuff, and continue with the previous code

TL;DR: Don't mix your train of thought


Problems

  • Readability
  • Bad Scoping


Solutions

  1. Move the code close together
  2. Try to extract the method


Refactorings

Refactoring 002 - Extract Method


Context

Entangled code is related beyond time and space.

You are reading the code, then skip to another subject and return to the first one.


Sample Code

Wrong

def planetary_properties(semi_major_axis,
                         incoming_radiation, reflected_radiation):
    Gravitational_Constant = 1.0    
    Sun_Mass = 1.0    
    # Up to here, there's a preparation
    # for the orbital period computation
    
    albedo = reflected_radiation / incoming_radiation
    # This is unrelated to the previous computation
    
    # You resume the first computation
    orbital_period_squared = (
        (4 * math.pi**2 * semi_major_axis**3) /
        (Gravitational_Constant * Sun_Mass)
    )
    retrun orbital_period, albedo

Right

def planetary_properties(semi_major_axis,
                         incoming_radiation, reflected_radiation):
    Gravitational_Constant = 1.0    
    Sun_Mass = 1.0    
     orbital_period_squared = (
        (4 * math.pi**2 * semi_major_axis**3) /
        (Gravitational_Constant * Sun_Mass)
    )
    # This is related to the first computation part
    
    albedo = reflected_radiation / incoming_radiation
    # This is related to the second part
    
    # The final solution is to break the function into two
    # This is a trivial example for illustration purposes
    # Things usually get more complicated and entangled
   
    retrun orbital_period, albedo


Detection

  • [x]Semi-Automatic

Some linters can infer scopes and make suggestions.


Tags

  • Readability


Level

  • [x]Beginner


AI Assistants

AI assistants suggest code without this mistake and improve this problem when asked.


Conclusion

This is a tiny tip and a short example of tidying


Relations

Code Smell 107 - Variables Reuse


Disclaimer

Code Smells are my opinion.


Credits

Photo by Michael Hamments on Unsplash


Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.


Brian Kernighan

Software Engineering Great Quotes


This article is part of the CodeSmell Series: How to Find the Stinky Parts of your Code