
Замените ссылки на ИИ в комментариях на тесты, которые на самом деле работают
7 июля 2025 г.Новые технологии, новые запахи - вашей будущей работой не будет писать код, а понимание и исправление кода, часто написанного ИИ
TL; DR: вы ссылаетесь на внешние разговоры по ИИ, чтобы объяснить код вместо написания декларативных тестов
Проблемы 😔
- Комментарии
- Внешние зависимости
- Разбитые ссылки
- Неверное поведение
- Фрагментация знаний
- Техническое бремя
- Потерянный контекст
- Устаревшие комментарии
- Вводящее в заблуждение объяснение
Решения 😃
- Писатьисполняемые тесты
- Удалить внешние ссылки
- Не слепо доверяйте ИИ
- Опишите с помощью встроенных примеров
- Держите тесты на местных
- УдалятьВсе комментарии
- ЗаменятьМагические числас постоянными.
Рефакторинг ⚙
https://maximilianocontieri.com/refactoring-011-replace-comments-with-tests?embedable=true
Контекст 💬
Если вы добавите комментарии, которые ссылаются на внешние разговоры по ИИ, посты переполнения стека или онлайн -ресурсы, чтобы объяснить, как работают ваши функции, вы не думаете о своем читателе.
Эти ссылки создают опасные внешние зависимости, которые со временем ломаются.
Ссылки становятся мертвыми, разговоры удаляются, и будущие сопровождающие не могут получить доступ к контексту, необходимому для понимания вашего кода.
Когда вы полагаетесь на внешние советы по искусственному интеллекту, вместо того, чтобы писать надлежащие тесты, вы создаете код, который появляется задокументированный, но не хватает проверки и локального понимания.
В тот момент, когда вы полагаетесь на внешний чат ИИ, чтобы объяснить, что делает ваш код, вы делаете свою кодовую базу зависимым от разговора, который может исчезнуть, меняться или устареть.
Единый тест более эффективен, чем любая ссылка. Он определяет, что делает код и что вы ожидаете. Не нужно нажимать или угадать.
Комментарии и документация часто лгут. Код никогда не делает.
Пример кода 📖
Неправильно ❌
def calculate_starship_trajectory(initial_velocity, fuel_mass,
burn_rate, gravity=9.81):
"""
See explanation at
https://claude.ai/share/5769fdd1-46e3-40f4-b9c6-49efbee93b90
"""
# AI suggested this approach
burn_time = fuel_mass / burn_rate
# Physics formula from Claude conversation
# https://claude.ai/share/5769fdd1-46e3-40f4-b9c6-49efbee93b90
delta_v = gravity * burn_time * 0.85
# 0.85 explanation
# https://claude.ai/share/5769fdd1-46e3-40f4-b9c6-49efbee93b90
final_velocity = initial_velocity + delta_v
# Return format suggested by GPT
return {
'burn_time': burn_time,
'final_velocity': final_velocity,
'delta_v': delta_v
}
def calculate_orbit_insertion(velocity, altitude):
"""
Algorithm explanation available at:
https://claude.ai/chat/orbit-insertion-help-session
"""
# See AI conversation for why we use this formula
orbital_velocity = (velocity * 1.1) + (altitude * 0.002)
return orbital_velocity
Справа 👉
def calculate_starship_trajectory(initial_velocity, fuel_mass,
burn_rate, gravity=9.81):
THRUST_EFFICIENCY = 0.85
burn_time = fuel_mass / burn_rate
delta_v = gravity * burn_time * THRUST_EFFICIENCY
# You replace the magic number
final_velocity = initial_velocity + delta_v
return {
'burn_time': burn_time,
'final_velocity': final_velocity,
'delta_v': delta_v
}
def calculate_orbit_insertion(velocity, altitude):
"""Calculate orbit insertion velocity."""
VELOCITY_BOOST_FACTOR = 1.1
ALTITUDE_ADJUSTMENT_RATE = 0.002
orbital_velocity = (velocity * VELOCITY_BOOST_FACTOR) +
(altitude * ALTITUDE_ADJUSTMENT_RATE)
return orbital_velocity
import unittest
from starship_trajectory_calculator import (
calculate_starship_trajectory, calculate_orbit_insertion
)
class TestStarshipTrajectoryCalculator(unittest.TestCase):
def test_basic_trajectory_calculation(self):
result = calculate_starship_trajectory(100, 1000, 10)
self.assertEqual(result['burn_time'], 100.0)
self.assertEqual(result['delta_v'], 833.85)
self.assertEqual(result['final_velocity'], 933.85)
def test_zero_fuel_scenario(self):
result = calculate_starship_trajectory(200, 0, 10)
self.assertEqual(result['burn_time'], 0.0)
self.assertEqual(result['delta_v'], 0.0)
self.assertEqual(result['final_velocity'], 200.0)
def test_high_burn_rate(self):
result = calculate_starship_trajectory(150, 500, 100)
self.assertEqual(result['burn_time'], 5.0)
self.assertAlmostEqual(result['delta_v'], 41.69, places=2)
self.assertAlmostEqual(result['final_velocity'], 191.69,
places=2)
def test_custom_gravity(self):
result = calculate_starship_trajectory(100, 600, 20,
gravity=3.71) # Mars
self.assertEqual(result['burn_time'], 30.0)
self.assertAlmostEqual(result['delta_v'], 94.76, places=2)
self.assertAlmostEqual(result['final_velocity'], 194.76,
places=2)
def test_orbit_insertion_basic(self):
orbital_velocity = calculate_orbit_insertion(7800, 400000)
self.assertEqual(orbital_velocity, 9380.0)
def test_orbit_insertion_low_altitude(self):
orbital_velocity = calculate_orbit_insertion(7500, 200000)
self.assertEqual(orbital_velocity, 8650.0)
def test_orbit_insertion_zero_altitude(self):
orbital_velocity = calculate_orbit_insertion(8000, 0)
self.assertEqual(orbital_velocity, 8800.0)
Обнаружение 🔍
- Автоматический
Вы можете обнаружить этот запах, найдя комментарии, содержащие URL -адреса, на платформы чата искусственного интеллекта, внешние форумы или ссылки на «Предложение ИИ» или «в соответствии с разговором».
Ищите функции, которые имеют подробные внешние ссылки, но не имеют соответствующих модульных тестов.
Исключения 🛑
Академический или исследовательский кодекс может законно ссылаться на опубликованные статьи или установленные алгоритмы.
Тем не менее, они должны указывать на стабильные, складываемые источники и постоянные связи, а не эфемерные разговоры по ИИ, и все еще должны включать всеобъемлющие тесты.
Теги 🏷
- Комментарии
Уровень 🔋
- Новичок
Почему биение важна 🗺
В реальном мире вы не полагаетесь на внешние власти, чтобы подтвердить ваше понимание критических процессов.
Вы разрабатываете внутренние системы знаний и проверки.
Ваш код должен отражать эту реальность, содержащая все необходимое понимание внутри себя посредством тестов и четкой реализации.
Когда вы сломаете этоперепискаВ зависимости от внешних разговоров с искусственным интеллектом, вы создаете хрупкие знания, которые исчезают, когда ссылки разрываются или платформы меняются, оставляя будущих сопровождающих без необходимого им контекста.
Ссылки не являются поведением.
Тесты есть.
Поколение AI 🤖
Генераторы ИИ иногда создают этот запах, потому что они часто предлагают добавлять ссылки на разговор или внешние источники, где решение было обсуждено ранее.
Они склонны генерировать чрезмерные комментарии, которые указывают на их объяснения, а не создают автономный, тестируемый код.
Обнаружение ИИ 🧲
ИИ может обнаружить этот запах, когда вы просите его идентифицировать внешние ссылки в комментариях, особенно URL -адреса, указывающие на платформы чата искусственного интеллекта.
Большинство инструментов искусственного интеллекта могут помочь преобразовать внешние объяснения в надлежащие модульные тесты, когда даны четкие инструкции.
Попробуйте их! 🛠
Помните: помощники ИИ делают много ошибок
Предлагаемая подсказка: замените эту внешнюю ссылку и комментарии на покрытие и модульные тесты
Без надлежащих инструкций | С конкретными инструкциями |
---|---|
Чатгпт | Чатгпт |
Клод | Клод |
Недоумение | Недоумение |
Второй пилот | Второй пилот |
Близнецы | Близнецы |
DeepSeek | DeepSeek |
Meta ai | Meta ai |
Грок | Грок |
Qwen | Qwen |
Заключение 🏁
Внешние ссылки на разговоры с искусственным интеллектом создают хрупкую документацию, которая со временем ломается и фрагментирует знания вашей кодовой базы.
Вы должны заменить эти внешние зависимости на автономные модульные тесты, которые документируют и проверяют поведение локально, гарантируя, что ваш код остается понятным и поддерживаемым, не полагаясь на внешние ресурсы.
Отношения 👩❤
https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-xxxvii?embedable=true
https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-xxx
https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-xxxi
https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-i-xqz3evd?embedable=true
https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-i-xqz3evd?embedable=true
https://hackernoon.com/how-to-find-the-shooky-parts-of-your-code-part-xv
https://hackernoon.com/code-smell-259-control-your-environment-to-avoid-test-failures
Отказ от ответственности 📘
Кодовые запахи - моимнениеПолем
Кредиты 🙏
ФотоЖюльен ТромернаНеспособный
Лучшая документация - это код, который не нуждается в документации
Стив Макконнелл
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
Оригинал