программистское
Dec. 10th, 2007 06:26 pmА бывает вот такое, например. Представьте, что вы долго чинили какой-то довольно запутанный баг, но вот вы наконец в нем разобрались, продумали, что в точности ваши изменения должны делать, написали их, запустили - не работает - исправили несколько проблем, запустили еще раз - ура, все в порядке!
И вы уже готовы отослать ваше решение на code review (для непрограммистов: послать коллегам, чтобы посмотрели и проверили), как вдруг вы смотрите на него еще раз свежим взглядом и видите, что в имени одной из переменных есть ошибка, оно просто написано неверно, и поэтому ваш код не делает то, что вы думаете, что он делает.
(во время компиляции это не отловилось, например, потому, что это Джаваскрипт и "имя переменной" на самом деле ключ хэша, или что-то в этом роде. Неважно)
Вы исправляете ошибку, перезапускаете - и, конечно, ничего не работает.
И тут возникает такая дилемма. С одной стороны, "if it ain't broke, don't fix it": у вас есть работающее решение, оно проверено на всех браузерах. Тот аргумент, который из-за описки не передавался, можно просто удалить. С другой стороны, вы не понимаете, почему оно работает, а когда делаете так, как понимаете, оно не работает. И разобраться, что там именно происходит и какие тонкости поведения браузеров и кода, который изначально вообще не вы писали, может легко еще пол-дня отнять, скажем, а то и больше. Как бы вы поступили?
И вы уже готовы отослать ваше решение на code review (для непрограммистов: послать коллегам, чтобы посмотрели и проверили), как вдруг вы смотрите на него еще раз свежим взглядом и видите, что в имени одной из переменных есть ошибка, оно просто написано неверно, и поэтому ваш код не делает то, что вы думаете, что он делает.
(во время компиляции это не отловилось, например, потому, что это Джаваскрипт и "имя переменной" на самом деле ключ хэша, или что-то в этом роде. Неважно)
Вы исправляете ошибку, перезапускаете - и, конечно, ничего не работает.
И тут возникает такая дилемма. С одной стороны, "if it ain't broke, don't fix it": у вас есть работающее решение, оно проверено на всех браузерах. Тот аргумент, который из-за описки не передавался, можно просто удалить. С другой стороны, вы не понимаете, почему оно работает, а когда делаете так, как понимаете, оно не работает. И разобраться, что там именно происходит и какие тонкости поведения браузеров и кода, который изначально вообще не вы писали, может легко еще пол-дня отнять, скажем, а то и больше. Как бы вы поступили?
no subject
Date: 2007-12-10 04:39 pm (UTC)no subject
Date: 2007-12-10 04:39 pm (UTC)no subject
Date: 2007-12-10 04:39 pm (UTC)no subject
Date: 2007-12-10 04:42 pm (UTC)no subject
Date: 2007-12-10 04:42 pm (UTC)Вот я получил на гмейл такое вот письмо
To initiate the process for resetting the password for your
biggenerator@gmail.com Google Account, visit the link below
http://www.google.com/accounts/RP?c=*******************
If clicking the link above does not work, copy and paste the URL in a
new browser window instead.
Thank you for using Google.
For questions or concerns regarding your account, please visit the
Google Accounts FAQ at
http://www.google.com/support/accounts/.
Все ссылки кажутся настоящими, но при этом я никого ни о чем не просил и не спрашивал и не забывал никакие пароли, чтобы их reset. Что бы это могло значить? Этот адрес был моим ЖЖ-адресом довольно долго и я публиковал его в журнале, но затем поменял на другой, который использую только для получения комментов (туда даже спам не идет).
no subject
Date: 2007-12-10 04:42 pm (UTC)мне очень хочется думать, что я бы влезла разбираться.
но на самом деле есть масса неучтённых факторов.
то есть если проект, скажем, сдавать надо было вчера, и если удаление той части, где есть описка, действительно ничего не испортит ни мне, ни тем, кто будет с этим проектом работать после меня — тогда, вероятно, отдала бы как есть.
или вот если ждать больше нельзя, а у меня именно сегодня - зубы болят или дежурство назначено у немощного дедушки.
но в идеале, конечно, интересно же, что там спрятано внутри.
no subject
Date: 2007-12-10 04:43 pm (UTC)Деадлайн на носу теоретически позволяет откомментировать и оставить до первой чистки.
Хотя на сердце было бы оч. неспокойно...
no subject
Date: 2007-12-10 04:45 pm (UTC)До полной победы разума над сарсапариллой.
Заодно и еще что-нибудь интересное можно нарыть.
Если код работает, то там есть цепочка (ну, граф, на самом деле) нейтрализующих сами себя багов. Потянешь за хвостик, а там такой глист...
Пытливые программисты - они как дети, застрявшие в анальном периоде...
no subject
Date: 2007-12-10 04:46 pm (UTC)no subject
Date: 2007-12-10 04:47 pm (UTC)no subject
Date: 2007-12-10 04:47 pm (UTC)no subject
Date: 2007-12-10 04:47 pm (UTC)У меня чаще бывает, с очень старым кодом, что я понимаю, что некоторое изменение его непременно починит, а почему в точности, не могу сказать. Ну, я делаю исправление, оно, по всем признакам, чинит -- отсылаю -- от меня требуют объяснений, я их долго-долго сочиняю, но кода больше не трогаю, так он и идет в релиз -- и со временем забываю подробности этого спагетти; его не понимать надо было, а рефакторить.
no subject
Date: 2007-12-10 04:48 pm (UTC)no subject
Date: 2007-12-10 04:50 pm (UTC)no subject
Date: 2007-12-10 04:50 pm (UTC)no subject
Date: 2007-12-10 04:51 pm (UTC)no subject
Date: 2007-12-10 04:52 pm (UTC)no subject
Date: 2007-12-10 04:52 pm (UTC)я отчего-то решила, что вы про людей, в общем виде.
а вы по делу.
no subject
Date: 2007-12-10 04:54 pm (UTC)Да, звучит очень разумно.
no subject
Date: 2007-12-10 04:55 pm (UTC)no subject
Date: 2007-12-10 04:55 pm (UTC)no subject
Date: 2007-12-10 04:55 pm (UTC)no subject
Date: 2007-12-10 04:56 pm (UTC)no subject
Date: 2007-12-10 04:57 pm (UTC)no subject
Date: 2007-12-10 05:00 pm (UTC)особенно если при этом якобы нарушаются правила логики.
более того, при дебагировании, помимо чисто умозрительного интереса, иногда эти вещи могут указывать на более серьёзные, скрытые неполадки.
так что я бы продолжил.
даже если и нет, в конце концов ты просто реабилитируешь логику (или элементарные законы физики).