Здравствуйте, Framer, Вы писали:
F>Да таких горбаг как описанно я не видал. F>Эпизоды мне знакомы, но чтобы все вместе...
Я сбежал с прошлого места работы (был там контрактором), когда меня перевели на похожий проект — "слегка поменять" функциональность уже работающей (в продакшене огромной корпорации) системы. Только там было _намного_ больше 250К кода, думаю, где-то раз в 15-20. Чувакам, которые это писали (по-моему, году так в 90-м), похоже, платили за кол-во строчек кода — код был дублирован где только можно. А может быть, они работали на "job security" — никто их уволить не смог бы, так не было никакой возможности разобраться в исходниках. Наверное, в менеджеры пошли в период бума... Не буду утомлять вас описанием того, что я встречал в том коде, поверьте, это было не менее ужасно, чем код у автора этого топика. В общем, где-то месяц с переменным успехом пытался причесывать тот код (конечно же, никаких юнит тестов и в помине нет, зато есть горы (буквально) бумажной документации) — окончательно убила меня функция на 5000 (!) строк. Подумав, что психическое здоровье важнее, к тому же жалко гробить годы на такую хреновню — принял предложение другой компании, чему сейчас страшно рад Здесь я работаю уже почти два года, а тот проект всё "пишется" и конца-краю ему не видно
Здравствуйте, Apostate, Вы писали:
A>Не знаю, не знаю... Может он быть, он считал что пока и так нормально, а когда понадобится легко можно сделать, работа не сложная. Ну воот открывателю топика и понадобилось — пускай делает.
Спасибо, и тебе того же.
A>И кое-какие функции там уже есть — draw_sprite . Как раз тот случай когда можно с уверенностью заранее сказать, еще не приступив к написанию кода, что такая функция будет нужна в нем не раз и не два.
draw_sprite — это стандартная функция библиотеки allegro.
А его функции часто соответствуют названию, однако есть функции с похожими названиями (например слова местами переставлены), делающие совешенно другие вещи. Для полного счастья они ещё друг друга вызывают.
Здравствуйте, Юнусов Булат, Вы писали:
ЮБ>Готов поспорить на стакан красного и огурец, что этот программер юзал allegro для графики. Если так то тебе еще повезло, она понятная и глюков там не много, да и программу можно компилять и отлаживать в VC6.0, 7.0, 7.1
Огурец заслужил, но без красного. :-Р
По почте бандеролью выслать?
1) Во-первых, либо это в VC.NET баг, либо так влияет весьма странная многопоточность allegro (есть time-critical и high priority threads), но при отладке проги использующей аллегро, среда иногда намертво виснет и вешает комп. Единственный выход — иметь открытый FAR, при зависании переходить в него по Alt-Tab и убивать devenv.exe. Ни запустить что-нибудь, ни открыть Task Manager по Ctrl-Alt-Del в это время нельзя. Что характерно, вероятность зависания намного выше, если ставишь breakpoint близко к месту, в котором должен будет выскочить assertion failure. Единственный гарантированный метод без зависаний — наставить ASSERT-ов и запустить без отладки, а затем выбрать debug при assertion failure.
Кстати, ещё странный глюк — при выходе из программы в оконном режиме, она может закрыть окно и зависнуть на каком-то WaitForMultipleObjects при закрытии тредов ввода. Так и не разобрался — из-за невозможности отладки. Проверял на идущих с аллегро тестах и примерах — аналогично. Allegro 4.0.3.
2) Во-вторых, allegro у него используется равномерно по всему коду. Т.е. нет определённых функций вывода, скажем, информации об игроке: где вздумалось вывести инфо, там и стоит textout или textprintf на жёстко заданную координату. Со спрайтами — похожая ситуация.
Сначала я пытался ещё как-то рефакторить код (потратив до этого 4 дня на форматирование, т.к. ни один форматер не смог его нормально отформатировать — слишком много вложенных if и for), но на прошлой неделе плюнул и стал переписывать весь код начисто, используя его исходники как reference по логике игры.
Здравствуйте, Framer, Вы писали: F>Из чего делаем вывод все это юмористический литературный этюд.
Ура! Мне не верят!
Всегда мечтал написать что-нибудь литературное, вот только не получалось никогда. Даже оценки за сочинения в школе снижали постоянно за малое количество текста и нераскрытость темы. Не знал чего писать — "ведь и так всё понятно".
А зачем вам этот код ? Все что тут можно сделать без гемороя это поменять копирайты или язык игры .
L>3) почти на чистом С — значит на С компиляторе он уже не скомпилируется, т.к. структуры уже используются без ключевого слова struct, однако ни одна фича С++ больше не используется.
Ну ... я может чего незнаю но, но помоему чистый Си берёт структуры без волшебного слова (По крайней мере у меня )
Здравствуйте, www, Вы писали:
www>Я конечно понимаю, что программисты не знают языков, но... увольте... www>такое читать невозможно. www>не знаю вашей компетенции, но судя по всему...
Здравствуйте, WFrag, Вы писали:
WF>Здравствуйте, Apostate, Вы писали:
WF>А может просто стоит такие куски выносить в осмысленные функции? И переменные по-человечески называть — тогда никакой "колбасы" не будет. Форматирование тут не при чем — просто криво написано .
стоит конечно, но все сразу)
WF>P.S. Глянешь на кусок хорошо написаного кода — сразу понятно, о чем хоть речь-то идет. А тут — полная фигня, какое-то безликое перемалывание массивов.
хороший код это как правило тот который "я написал только что" а не тот который "я написал год назад" и уж тем более не тот который "написал он"
Здравствуйте, limax, Вы писали:
L>Достался мне в наследство от предыдущего программера код
У меня все намного хуже.
L>Теперь вопрос: что мне передать тому программисту при встрече, ежели такая когда-нибудь состоится?
Я не придумал такой пытки.
A>... Не буду утомлять вас описанием того, что я встречал в том коде, поверьте, это было не менее ужасно, чем код у автора этого топика. В общем, где-то месяц с переменным успехом пытался причесывать тот код (конечно же, никаких юнит тестов и в помине нет, зато есть горы (буквально) бумажной документации) — окончательно убила меня функция на 5000 (!) строк.
Ничего себе! Мне больше 2000 строк еще не попадались. Зато много и сразу. О побочных эффектах из-за глобальных переменных, использующихся в качестве рабочих, я просто молчу.
И еще один момент: качество бумажной документации аналогично качеству кода. У меня даже был случай, когда мы полностью проигнороиовали предложенную архитектором схему, сделав по-своему. Однако в бумаги, оставленные тем архитектором, иногда заглядывают. Приходится людям объяснять ситуацию. Времени переписать ту бумагу у руководства не нашлось. "Написано — не трогай!" — переложение известного лозунга на документацию.
Здравствуйте, stalcer, Вы писали:
F>>...либо что-то не то с управлением развития проектов в конторе... S>Вот и я подумал, что в дыню надо давать не программисту, а его руководителю, допустившему такую фигню.
Это был недоходный проект, делаемый несколькими приятелями из интереса к тактическим играм и теме "а что если вот так?", и держащийся на голом энтузиазме. Программист-предшественник был "приятелем приятеля". В какой-то момент он больше не смог работать над проектом — видимо "интузазизьм" закончился, или что либо менять стало слишком сложно (монолит).