
Используйте бесконечность, а не в петлях Python
30 июня 2025 г.К бесконечности, но не за пределами
TL; DR: ИспользоватьБесконечностьвместоНиктоПри поиске минимумов
Проблемы 😔
- Случайные IFS
- Неправильный дефолт
- Плохойполиморфизм
- Дополнительные условия
- Скрытая инициализация
- Неправильный доменкартирование
- Вводящее в заблуждение поведение
- Ненужные условия
- Сложная логика
- Нулевые проверки
- Код склонности к ошибкам
Решения 😃
- УдалитьСлучайные IFS
- Использоватьбесконечная ценность(Если ваш язык поддерживает его)
- УдалятьНет проверки
- УважатьМатематическая семантикаи последовательность
- Применитьнулевой объектшаблон
- Уменьшите пакет, упрощая код
- Используйте Float ('inf') в качестве базового корпуса для минимумов ♾
- Используйте float (' -inf') в качестве базового корпуса для максимумов -♾
- Удалить условные ветви
Рефакторинг ⚙
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
Оригинал