Code Smell 238 — Работа с запутанным кодом

Code Smell 238 — Работа с запутанным кодом

23 января 2024 г.

Вы выполняете код. Перейдите к остальным материалам и продолжите работу с предыдущим кодом

<блок-цитата>

TL;DR: не путайте ход мыслей

Проблемы

  • Удобочитаемость
  • Неверное определение области действия.

Решения

  1. Расположите код ближе друг к другу
  2. Попробуйте извлечь метод
  3. Рефакторинг

    Рефакторинг 002 — метод извлечения

    Контекст

    Запутанный код связан вне времени и пространства.

    Вы читаете код, затем переходите к другой теме и возвращаетесь к первой.

    Пример кода

    Неверно

    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
    

    Верно

    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
    

    Обнаружение

    • [x] Полуавтоматический

    Некоторые линтеры могут определять области действия и вносить предложения.

    Теги

    • Удобочитаемость

    Уровень

    • [x] Новичок

    ИИ-помощники

    Помощники с искусственным интеллектом подсказывают код без этой ошибки и исправляют ее, когда об этом просят.

    Заключение

    Это небольшой совет и краткий пример наведения порядка< /п>

    Отношения

    Код Smell 107 — повторное использование переменных< /п>

    Отказ от ответственности

    Запахи кода — это мои мнение.

    Кредиты

    Фото Майкла Хэмментса на Unsplash


    <блок-цитата>

    Отладка в два раза сложнее, чем написание кода. Поэтому, если вы пишете код как можно умнее, вы по определению недостаточно умны, чтобы его отлаживать.

    Брайан Керниган

    Великие цитаты о программной инженерии


    :::совет Эта статья является частью серии CodeSmell: Как найти «Вонючие» части вашего кода

    :::


    Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE