LINUX.ORG.RU
решено ФорумTalks

Как разбираться в чужом коде?


0

1

Есть 13 мегов кода, написанного вне всяких правил и архитектурных соглашений. Это не вермишель или быдлокод, это просто хаос. И его нужно доработать.

С чего начинать в нём разбираться?


>С чего начинать в нём разбираться?

с того, что надо доработать. Всегда ваш К.О. Ещё вам поможет освоение Vim'а.

drBatty ★★
()
Ответ на: комментарий от drBatty

>с того, что надо доработать. Всегда ваш К.О. Ещё вам поможет освоение Vim'а.

У меня такое не проходит. Первая мысль: какой [consored] дурак это делал?
Когда начинаешь доделывать что-то одно, меняется половина кода.
И это на уровне студенческих лаб.

ymuv ★★★★
()
Ответ на: комментарий от mopsene

Он мне ещё не заплатил. Но тут говна... кода могло быть раза в два меньше. Это просто жестоко! :D Так жестоко, что я не могу это на своей машине сходу запустить.

daris
() автор топика
Ответ на: комментарий от drBatty

Всегда использую этот подход. Но тут вопрос другой встал: нужно для каждого пункта ТЗ разбираться как работает связанный код, или сразу нужно осмыслить и разобрать на схемы весь проект? Второе было бы хорошо, но сколько времени уйдёт - хрен его знает.

daris
() автор топика
Ответ на: комментарий от daris

Тогда не жалуйся и работай, хотя конечно это жестоко, сочувствую.

mopsene ★★★
()
Ответ на: комментарий от daris

>Но тут вопрос другой встал: нужно для каждого пункта ТЗ разбираться как работает связанный код, или сразу нужно осмыслить и разобрать на схемы весь проект? Второе было бы хорошо, но сколько времени уйдёт - хрен его знает.

на полный анализ 13и метрового кода времени понадобится многовато. Особенно 13и метров быдлокода.

drBatty ★★
()
Ответ на: комментарий от ymuv

>У меня такое не проходит. Первая мысль: какой [consored] дурак это делал? Когда начинаешь доделывать что-то одно, меняется половина кода.

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

drBatty ★★
()
Ответ на: комментарий от drBatty

Благодарю. Вопрос теперь решён.

daris
() автор топика
Ответ на: комментарий от slyjoeh

>Есть 40 гигов простыней в стиле 90-х, и никто не плачет, все мужики.
Аватарка у тебя... символизирует.

Bad_ptr ★★★★★
()
Ответ на: комментарий от mopsene

Да. Пол сотни контроллеров, моделей, всё вперемешку и подпёрто двумя десятками левых экспериментальных плагинов.

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

daris
() автор топика
Ответ на: комментарий от daris

Как обычно - минимально разбираешься со схемой проекта, допиливаешь простой нужный функционал, попутно разбираясь с кодом. На каком-то уровне поймешь, что уже можно и целиком переработать/осмыслить работу.

aedeph
()
Ответ на: комментарий от aedeph

Угу, спасибо, похоже что сработает.

daris
() автор топика
Ответ на: комментарий от drBatty

>Характерный признак быдлокода - меняешь чего-нить, что-то другое отваливается...
И такое бывало. Правда проект не настолько велик, чтоб не можно было разобраться. Часто пишут простые, здавалось бы тривиальные части, но код роздутый, если переписать получится в раза 2-3 меньше.

ymuv ★★★★
()
Ответ на: комментарий от ymuv

И, конечно же, отсутствие комментариев.

ymuv ★★★★
()
Ответ на: комментарий от daris

пиши тесты - сначала пригодится чтобы разобраться, потом - для рефакторинка

fluorite ★★★★★
()

Во всем коде разбираться не обязательно а иногда и просто вредно для психики.

Берешь change-request и потихоньку добиваешься к пониманию куса кода ответственного за исполнение данной части используя отладчик и описание use-case.

Пытаешься править и смотришь на результат.

Как говорится глаза боятся а руки делают.

Ни пуха ни пера!

grim ★★☆☆
()

Попробуй прогнать код под профилеровщиком (e.g. valgrind callgrind + kcachegrind) на типичной задаче. Получишь реальный граф вызовов («тут вызывается именно этот метод, а не еще десяток с таким же интерфейсом») с привязкой к коду. Очень помогает разобраться если используются вирт.функции и указатели на функции. Запускать лучше с отладочной инфой и без оптимизации.

YesSSS ★★★
()

Никак. Нужно писать свой велосипед, как это и принято среди линуксоидов.

Energizer
()

Пиши тесты, как посоветовали выше.

drakmail ★★★★
()

Может, легче будет переписать с нуля?

fragment
()
Ответ на: комментарий от VIT

о, ещё одна клёвая статейка в сборник:-)
вредные советы для программиста

aptyp ★★★★
()
Ответ на: комментарий от daris

>нулевое продвижение в понимании этой свалки.

Именно так порой выглядит в моих глазах мой же собственный код 3+летней давности. Бывает принципиально проще и быстрее найти первоначальное техзадание и выполнить его с чистого листа.

blexey ★★★★★
()

Это у тебя от неопытности. Поработай несколько лет, перестанешь такие вопросы задавать.

Wizard_ ★★★★★
()

Тоже всегда интересовал этот вопрос. В своей жизни только одну программу взял и доработал. Остальное писал с нуля. Один раз попался исходник на C, состоящий из символов «1», «|», «I», «l» и вообще ничего не понятно.

CYB3R ★★★★★
()
Ответ на: комментарий от Wizard_

>Это у тебя от неопытности. Поработай несколько лет, перестанешь такие вопросы задавать.

У меня есть только несколько дней :)

Собственно, сработало всё как сказал grim: листаем код в поисках чего-то, что похоже на текущее поведение, дергаем имена, грепаем дерево исходников не предмет нахождения этих имён где-то ещё, читаем код, и по-новой пока не придёт понимание.

daris
() автор топика

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

Karapuz ★★★★★
()

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

gunja
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.