Используйте бесконечность, а не в петлях Python

Используйте бесконечность, а не в петлях Python

30 июня 2025 г.

К бесконечности, но не за пределами

TL; DR: ИспользоватьБесконечностьвместоНиктоПри поиске минимумов

Проблемы 😔

  • Случайные IFS
  • Неправильный дефолт
  • Плохойполиморфизм
  • Дополнительные условия
  • Скрытая инициализация
  • Неправильный доменкартирование
  • Вводящее в заблуждение поведение
  • Ненужные условия
  • Сложная логика
  • Нулевые проверки
  • Код склонности к ошибкам

Решения 😃

  1. УдалитьСлучайные IFS
  2. Использоватьбесконечная ценность(Если ваш язык поддерживает его)
  3. УдалятьНет проверки
  4. УважатьМатематическая семантикаи последовательность
  5. Применитьнулевой объектшаблон
  6. Уменьшите пакет, упрощая код
  7. Используйте Float ('inf') в качестве базового корпуса для минимумов ♾
  8. Используйте float (' -inf') в качестве базового корпуса для максимумов -♾
  9. Удалить условные ветви

Рефакторинг ⚙

https://hackernoon.com/refactoring-014-how-to-remove-if?embedable=true

https://hackernoon.com/code-refactoring-tips-no-015-remove-null?embedable=true

Контекст 💬

Проблема 1:

Вы хотите найти наибольшее число в списке положительных чисел.

Вы начинаете с 0 и сравните.

УдивительныйНулевой объектПолем Нет случайных IFS. Чистый код. 👌

Проблема 2:

Вы хотите найти самое низкое число в списке.

Большинство начинающих начинаются сНиктои проверить ", если текуНиктоили x <текущий ".

Вам это не нужно.

Вы можете начать сfloat ("inf")♾.

Этоведет себя-как-а-аномер.

Вы можете сравнить, сортировать и минимизировать это.

Это дает вам более простую логику иПолиморфныйкод.

Святой Грааль поведения.

Полиморфизм является самым смертоносным врагом случайных IFS.

https://hackernoon.com/how-to-get-rid-of-annoying-ifs-forever-zuh3zlo?embedable=true

Пример кода 📖

Неправильно ❌

def find_minimum_price(products):
    min_price = None
    
    for product in products:
        if min_price is None:
            min_price = product.price
        elif product.price < min_price:
            min_price = product.price
    
    return min_price

def find_minimum_in_list(numbers):
    if not numbers:
        return None
    
    minimum = None
    for number in numbers:
        if minimum is None or number < minimum:
            minimum = number
    
    return minimum

# Usage leads to more None checks
prices = [10.5, 8.2, 15.0, 7.8]
min_price = find_minimum_in_list(prices)
if min_price is not None:
    print(f"Minimum price: ${min_price}")
else:
    print("No prices found")

Справа 👉

def find_minimum_price(products):
    min_price = float('inf')
        
    for product in products:
        if product.price < min_price:
            # This is an essential IF, you should not remove it
            min_price = product.price
            # No accidental IF here (if min_price is None:)
    
    return min_price if min_price != float('inf') else None

def find_minimum_in_list(numbers):
    minimum = float('inf')
    
    for number in numbers:
        if number < minimum:
            minimum = number
    
    return minimum if minimum != float('inf') else None

# Cleaner usage - polymorphic behavior
prices = [10.5, 8.2, 15.0, 7.8]
min_price = find_minimum_in_list(prices)
print(f"Minimum price: ${min_price}")

Обнаружение 🔍

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

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

Если вы проверит противНиктоПрежде чем сравнивать значения, вы, вероятно, можетезапахэто.

Теги 🏷

  • Нулевой

Уровень 🔋

  • Новичок

Почему биение важна 🗺

В математике элемент идентификации для поиска минимума - положительная бесконечность. ♾

Когда вы используетеНикто, ты сломаешьКарт

Никтонетномер.

Это не ведет себя как число; Это не полиморфно с числами.

Это злоНулевойзамаскирован какНиктоПолем

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

Это нарушаетбиениемежду вашим кодом и математикой.

Когда вы используете Float («Inf»), вы остаетесь рядом с реальной концепцией.

Код моделирует домен правдиво.

Поколение AI 🤖

Модели ИИ, которые часто генерируют петли, часто используютНиктокак отправная точка.

Они могут включать ненужные проверки.

Обычно это происходит, когда модель пытается имитировать учебные пособия или обучается с плохим кодом или чрезмерно упрощенными примерами.

Обнаружение ИИ 🧲

ИИ может легко обнаружить и исправить эту проблему, когда вы предоставляете четкие инструкции.

Например

ИспользоватьБесконечностьДля минимального поиска инициализации

или

Применить шаблон нулевого объекта для математических операций.

Попробуйте их! 🛠

Помните: помощники ИИ делают много ошибок

Предлагаемая подсказка: используйте Infinity для минимальной инициализации поиска

Без надлежащих инструкций

С конкретными инструкциями

Чатгпт

Чатгпт

Клод

Клод

Недоумение

Недоумение

Второй пилот

Второй пилот

Близнецы

Близнецы

DeepSeek

DeepSeek

Meta ai

Meta ai

Грок

Грок

Qwen

Qwen

Заключение 🏁

Ноль не является дефолтом для всего.

Когда вы хотите найти минимум, вы должны начать с бесконечности.

Это разъясняет ваш код, удаляет условные условия иобеспечивает лучшую математическую биениеПолем

Перестань лечитьНиктокак число.НиктоявляетсяНулевойПолем ИНулевойявляетсяплохойПолем

Бесконечность полиморфной инулевой объект для максимальных математических операций

Используйте его.

Отношения 👩‍❤

https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-xxv

https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-xxvi

https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-iii-t7h3zkv

Больше информации 📕

https://hackernoon.com/how-to-get-rid-of-annoying-ifs-forever-zuh3zlo?embedable=true

https://hackernoon.com/null-the-billion-dollar-mistake-8t5z32d6?embedable=true

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

Кодовые запахи - моимнениеПолем

Кредиты 🙏

ФотоКрис БароннаНеспособный


Код должен моделировать проблему, а не решение

Богатый Хикки

https://hackernoon.com/400-thought-предвидение-software-engineering-quotes?embedable=true


Эта статья является частью серии Codesmell.

https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-i-xqz3evd?embedable=true


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