Тёмный

Как быстро находить ошибки в коде? Советы для начинающих 

Организованное программирование | Кирилл Мокевнин
Просмотров 37 тыс.
50% 1

Ошибки начинающих разработчиков:
* Вера в магию
* Путаница между причиной и следствием
* Stackoverflow Driven Development
Эффективная отладка:
1. Локализация проблемы
2. Поиск точки опоры
3. Пошаговое подключение кода

Опубликовано:

 

28 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 41   
@hongaslahoenvaara
@hongaslahoenvaara 3 года назад
Еще стратегия по поиску ключей в квартире: восстановить траекторию своих перемещений по квартире за последнее время, и пройтись по ней. Применительно к коду: посмотреть, что трогали за время, прошедешее с последнего успешного запуска. Часто косяки либо напрямую там, либо правильный новый код триггернул скрытый косяк в другом месте. При нахождении "точки опоры" и обратного подключения частей программы, я обычно подключаю их не шаг за шагом, а "методом деления отрезка пополам" - раскомментирую сразу одну половину. Если программа работает - перехожу ко второй половинке тем же методом, если же ошибка всплыла - комментирую обратно одну из половинок раскомментированной части. Таким образом локализация ошибки происходит не за O(N), а за O(log N).
@МаксимДзюбак-в5у
@МаксимДзюбак-в5у 2 года назад
Крутое видео! Благодарю, Кирилл!
@x1muk
@x1muk 3 года назад
Спасибо!
@user-evgeniy64
@user-evgeniy64 3 месяца назад
В первую очередь нужно посмотреть в кармане😅
@АндрейЛисецкий-ч1д
круто)
@dzianishrip5139
@dzianishrip5139 Год назад
Да не правда все это, что он тут задвигает. Отладка - искусство) да, ага. И в спорте и везде конечно же играет роль насколько качественными инструментами ты пользуешься. Это просто проверить, ты играешь например в пинг-понг, проигрываешь. Меняешься ракетками - выигрываешь. Хм, почему же так)))
@Jeljuariy
@Jeljuariy 2 года назад
поставим мировой рекорд с 0 дизлайков?!
@Serega5j
@Serega5j 7 месяцев назад
ничего удивительного не расказано
@АлексейТитов-д9э
Многое зависит от приложения. Если отображаемая информация четко согласована с состоянием приложения, то тогда локализация занимает значительно меньше времени. Насчёт спускаться от точки опоры - спуск возможен, если путей один или два, иначе это уже перебор всего кода, отсюда стоит делать минимальное количество точек входа. А по поводу ключей: на последней стадии я не перерываю всё в одной локации, а навожу порядок - обычно после этого ключи легко находятся. Тоже самое у меня применимо и к коду - легкий рефакторинг и возможно станет ясна причина. Суммарно: чем строже и логичнее код, тем проще в нём искать баги, так как баг это что-то нелогичное и оно в логичном коде просто будет бросаться в глаза.
@TealFoxPro
@TealFoxPro 6 месяцев назад
Если захожу в тупик при поиске ошибки, ложусь спать - пять утра, - не лучшее время продолжать поиски )
@ThisDaveAndThatJohn
@ThisDaveAndThatJohn 5 лет назад
Лично я заметил, что применение TDD при малейшем изменении, реально помогает избегать большинство запутанных ошибок. По сути, Кирилл описал тот же принцип при отладке - разделяй и властвуй.
@pabiiiah_4uk154
@pabiiiah_4uk154 2 года назад
временами слушаю этот ролик как медитацию при прохождении заданий на Хекслет, зачастую код вроде правильный, но среди кучи символов иногда упускаешь какую-то мелочь)
@newhero3917
@newhero3917 2 года назад
Когда теряю ключи, всегда спрашиваю Кирилла, почему мои ключи у него.
@UftKhaQ
@UftKhaQ 6 месяцев назад
Пррекрасный мультик для новичков. МилЧеловек, а что такое СтекОверфлоу? Что такое Сниппет? Если вы беретесь преподавать несведующим людям то каждый новый термин при первом упоминании должен быть расшифрован. Угу. Опять же.... Фреймворк? Можете объяснить внятным языком что это такое? Треды могут общаться... Гонки, Шаред Стейт..... Пдждите пжалста, язаписсывайу. Что касается вашего подхода, то была древняя шуточная задачка: как поймать льва в Пустыне и подход разных специалистов к этому процессу. Мой любимый способ - способ Деканата: Хвост есть - сам придет. А ваш это подход геометрический - делим пустыню пополам, смотрим где лев, дальше делим половину где лев еще пополам и.т.д. Чтобы мой комментарий не казался тупым наездом хочу сказать, что в названии ролика есть слова "для начинающих" и я сюда пришоло по ссылке с курса где учать писать "Hello, World."
@diplodockxxi1057
@diplodockxxi1057 6 месяцев назад
Отличное замечание. Я слушал это всё и у меня начались сильные сомнения смогу ли я стать программистом. Но твой комментарий снова воодушевил меня и я опять решил не сдаваться
@Acid31337
@Acid31337 5 лет назад
Забыл что ошибку нужно сначала воспроизвести, создав среду где она стабильно возникает )
@Paul-kr8dq
@Paul-kr8dq 29 дней назад
Чем отличается опытный разраб от джуна? У него есть привычка "класть ключи" всегда в одно и то же место, а также знать аналогичные привычки других. Поэтому, в случае пропажи, джун действительно начинает поиск по разным стратегиям, а опытный инженер просто идёт в нужное место и берёт ключи.😂
@kestutissnieska
@kestutissnieska 4 месяца назад
Изучал основы Python3 и было задание написать быстрое сортирование. Нашёл алгоритм с двух-концевым быстрым сортированием на JAVA и перевёл на питон оставляя for - а там изменяется переменная цикла внутри цикла и резултат был, что итоговый список выходил не как должен. Было интересно поучиться использовать средства отладки в питоне и в конце понять, что ошибка при переводе (поменял циклы на while и заработало).
@noanynikname
@noanynikname Месяц назад
Не сладкая жизнь в it, много претензий у пользователей за плохо работающее ПО
@sofiaost6162
@sofiaost6162 4 месяца назад
Начала смотреть это видео, потому что не могла найти ошибку в коде. Поиск ключей. Представила, как бы искала. Начала с двери - не в замке ли они? Так и есть. Код тоже. Всё написала, всё здорово. Но самое главное - забыла нвписать print. )))
@евгенийдавыдов-я7б
@евгенийдавыдов-я7б 4 месяца назад
....а если не знаешь как выглядит "ключ"? а вашем случае ключи все разные....
@Acid31337
@Acid31337 5 лет назад
И еще надо использовать git(или аналог) чтоб после боя все восстановить и по человечески исправить
@azmesmparser
@azmesmparser 5 лет назад
В поиске ошибки может помочь git bisect.
@ДмитрийКозюк-ъ8к
Отладка методом пузырька:)
@Артём_М
@Артём_М 2 года назад
выключил видео после слов о том, что магии не существует. а если серьёзно: классное видео, хорошие советы, спасибо)
@СергейКондулуков-з9ч
@СергейКондулуков-з9ч 8 месяцев назад
Очень интересно. Ключи всегда вешаю на гвоздик. Плохой ракеткой сыграть можно но трудно. Наклейки, резина. Насчёт сути. Во всём мне хочется дойти до сути. В работе, суете, душевной смуте. Б. Пастернак.
@PyHard
@PyHard 2 года назад
Если компилятор указывает на строку где все нормально, а ошибка находится где то выше по коду, то чаще все использую отладочный вывод переменных на экран)
@biblehebrew
@biblehebrew 2 года назад
Спасибо за видео. Узнал себя в некоторых моментах, а я только 2 месяца изучаю Python
@igork9338
@igork9338 2 года назад
Поиск ошибок - это искусство, которое дается только со временем и с опытом, и очень часто основывается на личной интуиции. Квалификация разработчика заключается именно в этом.
@olegv.istchenko6547
@olegv.istchenko6547 2 года назад
Странное обоснование утверждения, что инструменты для отладки не так важны - на примере мастера спорта с плохой ракеткой. Отлаживать вообще без инструментов, это всё равно, что играть в настольный теннис вообще без ракетки. Каким бы ты не был мастером спорта, играть так не получится. Вот и отлаживать без инструментов не получится. Ну никак.
@vlad4876
@vlad4876 2 года назад
Да ладно? Сам язык содержит средства отладки. Начни с print и добавляй обвязку к принту по мере потребности.
@olegv.istchenko6547
@olegv.istchenko6547 2 года назад
​@@vlad4876 С удовольствием понаблюдаю, как Вы будете отлаживать с помощью print код, который манипулирует коллекцией из нескольких сотен/тысяч объектов, каждый из которых содержит десяток-два полей =D. В отладчике в режиме останова я могу просматривать эту коллекцию как угодно, т.к. она загружена в память, Вам же придётся (а) выгружать в файл, т.к. в консоли просматривать килобайты текста нереально и (б) в текстовом редакторе потом с этим файлом общаться. Я даже не говорю о том, что в отладчике можно на лету подменять значения и смотреть, что из этого получится -- при использовании print такой возможности нет. Так что Ваш способ подходит (а) только для достаточно простых случаев и (б) если есть консоль. Если отлаживается код веб-сервера -- куда print выводит будет? Нужно прикручивать логирование. Так что ответ на "да ладно?" -- да, именно так. :)
@lightinthedark5708
@lightinthedark5708 5 лет назад
спасибо, было интересно.
@limonred5283
@limonred5283 3 года назад
Стакановерфлоу - наше все.
@dmitrijponkin
@dmitrijponkin 5 лет назад
Спасибо!
@АлександрЩербаков-о9щ
Просто напишу комментарий чтобы он был.
@turgayalekberli9554
@turgayalekberli9554 3 года назад
Спасибо за советы
@pranamanna
@pranamanna 5 лет назад
Пригодится инфа!
Далее
Barno
00:22
Просмотров 658 тыс.
"Когти льва" Анатолий МАЛЕЦ
53:01
Junior, Middle, Senior. В чем разница?
13:53
Ошибки в коде 90% программистов
2:11:36
Barno
00:22
Просмотров 658 тыс.