?

Log in

программистское - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

программистское [дек. 10, 2007|06:26 pm]
Anatoly Vorobey
А бывает вот такое, например. Представьте, что вы долго чинили какой-то довольно запутанный баг, но вот вы наконец в нем разобрались, продумали, что в точности ваши изменения должны делать, написали их, запустили - не работает - исправили несколько проблем, запустили еще раз - ура, все в порядке!

И вы уже готовы отослать ваше решение на code review (для непрограммистов: послать коллегам, чтобы посмотрели и проверили), как вдруг вы смотрите на него еще раз свежим взглядом и видите, что в имени одной из переменных есть ошибка, оно просто написано неверно, и поэтому ваш код не делает то, что вы думаете, что он делает.

(во время компиляции это не отловилось, например, потому, что это Джаваскрипт и "имя переменной" на самом деле ключ хэша, или что-то в этом роде. Неважно)

Вы исправляете ошибку, перезапускаете - и, конечно, ничего не работает.

И тут возникает такая дилемма. С одной стороны, "if it ain't broke, don't fix it": у вас есть работающее решение, оно проверено на всех браузерах. Тот аргумент, который из-за описки не передавался, можно просто удалить. С другой стороны, вы не понимаете, почему оно работает, а когда делаете так, как понимаете, оно не работает. И разобраться, что там именно происходит и какие тонкости поведения браузеров и кода, который изначально вообще не вы писали, может легко еще пол-дня отнять, скажем, а то и больше. Как бы вы поступили?
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: dimrub
2007-12-10 04:39 pm
Разбираться, конечно. Иначе сам же потом еще два дня потратишь, чтобы починить возникающий из-за этого баг в каком-то другом сценарии. Чисто из соображений экономии времени.
(Ответить) (Thread)
[User Picture]From: avva
2007-12-10 04:50 pm
Я думаю поступить следующим образом: послать решение, которое работает, и одновременно предложить автору кода согласиться на рефакторинг, который сильно его упростит и облегчит нахождение таких проблем. Если он не будет против, рефакторинг сделаю я (там основная проблема в том, что надо будет менять много вызовов в других местах, но изменения будут тривиальные).
(Ответить) (Parent) (Thread) (Развернуть)
From: ex_decil
2007-12-10 04:39 pm
Зависит от степени вовлеченности в проект и дедлайна. Если есть время - буду ковырять до победного. Если нету - оставлю на будущие ковыряния
(Ответить) (Thread)
[User Picture]From: arpad
2007-12-10 04:43 pm
+1

Деадлайн на носу теоретически позволяет откомментировать и оставить до первой чистки.

Хотя на сердце было бы оч. неспокойно...

(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: eterevsky
2007-12-10 04:39 pm
Смотрю лишний раз -- интересно же, из-за чего не работает. Хотя если код не мой и поджимают другие баги, могу отложить разбирательство.
(Ответить) (Thread)
[User Picture]From: akater
2007-12-10 04:42 pm
Я думаю, коллегам надо честно обо всём рассказать, прежде всего.
(Ответить) (Thread)
[User Picture]From: avva
2007-12-10 04:50 pm
Ну, это само собой.
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
[User Picture]From: avva
2007-12-10 04:46 pm
Я примерно так собираюсь поступить.
(Ответить) (Parent) (Thread)
[User Picture]From: big_generator
2007-12-10 04:42 pm
Анатолий, я извиняюсь за оффтоп, но не могли бы ответить.

Вот я получил на гмейл такое вот письмо

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. Что бы это могло значить? Этот адрес был моим ЖЖ-адресом довольно долго и я публиковал его в журнале, но затем поменял на другой, который использую только для получения комментов (туда даже спам не идет).
(Ответить) (Thread)
[User Picture]From: avva
2007-12-10 04:48 pm
наверное, кто-то пытается взломать ваш аккаунт. Если они не знают ваших security question/answer, то все равно не выйдет. Но на всякий случай я бы на вашем месте обратился в support (не спрашивайте меня, как, не помню точно, по каким-то ссылкам FAQ-ов и помощи) и предупредил об этом и о том, что вы этого не просили.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: macide
2007-12-10 04:42 pm
я ни разу не программист, но.

мне очень хочется думать, что я бы влезла разбираться.

но на самом деле есть масса неучтённых факторов.
то есть если проект, скажем, сдавать надо было вчера, и если удаление той части, где есть описка, действительно ничего не испортит ни мне, ни тем, кто будет с этим проектом работать после меня — тогда, вероятно, отдала бы как есть.
или вот если ждать больше нельзя, а у меня именно сегодня - зубы болят или дежурство назначено у немощного дедушки.

но в идеале, конечно, интересно же, что там спрятано внутри.
(Ответить) (Thread)
[User Picture]From: macide
2007-12-10 04:52 pm
ой
я отчего-то решила, что вы про людей, в общем виде.

а вы по делу.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: motya
2007-12-10 04:45 pm
Говновопрос.
До полной победы разума над сарсапариллой.
Заодно и еще что-нибудь интересное можно нарыть.
Если код работает, то там есть цепочка (ну, граф, на самом деле) нейтрализующих сами себя багов. Потянешь за хвостик, а там такой глист...
Пытливые программисты - они как дети, застрявшие в анальном периоде...
(Ответить) (Thread)
[User Picture]From: kostik
2007-12-10 04:47 pm
Обычно разбираюсь до конца, но у Вас идет речь о браузерах. Ненавижу возиться с IE (а именно на его долю приходится 90% „особенностей“, поэтому в этом конкретном случае, может быть, смирился бы.
(Ответить) (Thread)
From: slonoinquisitor
2007-12-10 04:47 pm
Я не программист, но, проецируя вопрос на физику, разбирался бы до полной ясности. У меня еще не было случая, чтобы оставленная в тылах ошибка не дала о себе знать позже, порой через несколько лет, но всегда в самый неподходящий момент и в наиболее вредоносной форме.
(Ответить) (Thread)
[User Picture]From: b_a_t
2007-12-10 05:54 pm
Проработав год в поддержке коммерческого продукта уровня Оракла я был убит тем, сколько грубых ошибок присутствует в коде. А так же, как они фиксятся - из-за ограниченности по срокам первое же работающее решение немедленно передается заказчику, глупостями типа рефакторинга и прохода по всему алгоритму никто не занимается.
(Ответить) (Parent) (Thread)
[User Picture]From: yan
2007-12-10 04:47 pm
Ну, тут бы я стал дальше копаться.
У меня чаще бывает, с очень старым кодом, что я понимаю, что некоторое изменение его непременно починит, а почему в точности, не могу сказать. Ну, я делаю исправление, оно, по всем признакам, чинит -- отсылаю -- от меня требуют объяснений, я их долго-долго сочиняю, но кода больше не трогаю, так он и идет в релиз -- и со временем забываю подробности этого спагетти; его не понимать надо было, а рефакторить.
(Ответить) (Thread)
[User Picture]From: avva
2007-12-10 04:51 pm
Да, надо рефакторить. Но об этом я хочу отдельно переговорить с автором.
(Ответить) (Parent) (Thread)
[User Picture]From: penguinny
2007-12-10 04:55 pm
В первую очередь я бы как следует выругался.
(Ответить) (Thread)
[User Picture]From: plumqqz
2007-12-10 04:55 pm
Разбираться без вопросов. Когда есть кусок моего кода, работающий неведомым мне способом - я, извините, себе места не найду.
(Ответить) (Thread)
[User Picture]From: ait
2007-12-10 04:56 pm
Если не аврал, то разбираться, а то потому хуже будет.
(Ответить) (Thread)
From: gershshpraihler
2007-12-10 05:00 pm
я не програмист, но не люблю когда происходят вещи, которых я не понимаю.
особенно если при этом якобы нарушаются правила логики.
более того, при дебагировании, помимо чисто умозрительного интереса, иногда эти вещи могут указывать на более серьёзные, скрытые неполадки.
так что я бы продолжил.
даже если и нет, в конце концов ты просто реабилитируешь логику (или элементарные законы физики).
(Ответить) (Thread)
[User Picture]From: gem_in_i
2007-12-10 05:16 pm
Разобраться, иначе вылезет потом, при чем, на мое еврейское счастье, в самый неподходящий момент.
(Ответить) (Thread)
[User Picture]From: juan_gandhi
2007-12-10 05:19 pm
Да даже если неделя уйдёт. План друг, но истина дороже.
(Ответить) (Thread)
[User Picture]From: dimrub
2007-12-10 05:25 pm
Мне Путин друг, но план его дороже (так, подумалось вдруг).
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
[User Picture]From: nhura
2007-12-10 05:20 pm
Разбиралась бы. Любопытная я.
(Ответить) (Thread)
[User Picture]From: spamsink
2007-12-10 05:33 pm
Я хотел было предложить комментировать и оставить пока, а потом понял, что правильный комментарий (который не должен содержать семантику "я не понимаю", а то это и не комментарий вовсе) невозможно будет завершить, пока не разберешься.
(Ответить) (Thread)
[User Picture]From: smilga
2007-12-10 05:36 pm
Чинить.

«После долгих трудов достигнув совершенства, вы поднимаете голову и видите, что все, с кем бы можно было поделиться радостью, давно разошлись,» писал Шелькерль.
(Ответить) (Thread)
From: qaraabayna
2007-12-10 06:00 pm
Переделать, конечно.
(Ответить) (Thread)
[User Picture]From: b_a_t
2007-12-10 06:02 pm
Прочитав все эти комментарии, я наконец-то понял, для чего нужны Project Managers. Для того, чтобы заставить всю эту кучу идеалистов выдать готовый продукт не тогда, когда они сочтут, что в нем больше нечего улучшать(это бесконечный процесс), а в сколь-нибудь разумные сроки. Баги в софте будут всегда, к сожалению(flame on).
(Ответить) (Thread)
From: ext_72902
2007-12-10 06:25 pm
Сначала - разобраться, почему оно работает (менеджера послать на СНГ). Потом закоммитить. Не чинить.
(Ответить) (Thread)
(Удалённый комментарий)
From: wedjat
2008-01-21 04:22 pm
а как работают браузеры, ось и железо, вы полностью понимаете? :)
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
(Удалённый комментарий)
[User Picture]From: _glav_
2007-12-10 06:50 pm
вопрос "Как бы вы поступили?" особенно хорошо сочитается с фразой "для непрограммистов:..." :)))
(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>