Показать сообщение отдельно
  #1 (permalink)  
Старый 05.07.2015, 09:19
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

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

И начну пожалуй с себя.

Недавно, прочитал про программиста гугл, которого попросили описать свою ошибку, из-за которой компания потеряла много денег.

Я бы так и забыл об этом, если бы не скрипт, который я отлаживал уже месяц и который регулярно глючил. Ключевое слово - регулярно.

Логика скрипта для меня была очень сложная, скрипт работал с временными отрезками и приходилось думать в настоящем прошедшем и будущем одновременно со "сдвигами" в прошлое (когда подсчет идет до определенной даты в прошлом, а сдвиг считается от настоящего или будущего времени). Отладка тоже давалась нелегко, т.к. по всему скрипту нужно было проставить console.log(), прежде чем понять что и куда идет. Ну да суть не в console...

В течении месяца я перестраивал логику скрипта и в один момент понял, что всё работает и можно запускать и тут столкнулся с необъяснимым поведением скрипта, он глючил в неизвестном месте...

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

if (условие1 && условие2) {
//тут расчёт один
}
else {
//тут другой рассчет
}

//Исправить оказалось очень легко:

//выглядит не так красиво и компактно, как в первом варианте, но зато правильно
if (условие1) {
  if (условие2) {
    //тут расчёт один
  }
}
else {
  //тут другой рассчет
}


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

Я думаю в простом коде я бы на такие грабли не наступил, но из-за того, что приходилось много информации держать в голове, такие простые грабли ударили меня особенно сильно

Пишем железобетонный код.

Для себя я вывел следующее, не бояться добавить некрасивую вложенность, главное безошибочность.

Пишите свои интересные ошибки и то, как вы их находили и какие выводы после этого делали

Последний раз редактировалось Gozar, 05.07.2015 в 09:24.
Ответить с цитированием