0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
1

Как быстро разобраться в чужой программе (Android)?

12.02.2016, 15:33. Показов 4190. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем, добрый день.

Мне необходимо понять и изменить код в программе, которую писал другой android- программист. В связи с этим хотел узнать Ваш опыт или методику, поделитесь, пожалуйста, своим опытом как Вы разбирали чужой код и какие есть подводные камни? Код очень большой, много классов и так далее. Сколько времени Вам в среднем понадобилось, чтобы разобраться в чужой программе?

Заранее, спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2016, 15:33
Ответы с готовыми решениями:

Как разобраться в чужой CMS?
В чужой CMS много различных классов и объектов, я смотрю что на что ссылается и захожу в тупик....

Как обнаружить текст в чужой программе?
Пример - я возьму в первой программе выведу текст с помощью TextOutA , можно ли как то прочитать...

Как выбрать закладку RzPageControl в чужой программе
Уважаемые гуру. Имеем чужую окно. На нём расположены TsToolBar и TRzPageControl. Как выбрать...

Как быстро разобраться с CMS?
Здравствуйте. Никогда не приходилось разрабатывать на cms и не особо хотелось писал в основном на...

20
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
12.02.2016, 15:46 2
Delphian, какой у Вас опыт в java?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
12.02.2016, 15:52 3
Код опытного программиста читается как книга, к тому же android хорош тем, что код всегда разделен на некие части, например, помимо классов есть активности, в них методы жц и т.д, визуально можно разобраться. Другое дело, разобраться в алгоритме, придуманным другим человеком и записанным в виде int a,b,c; Но, опять же, зная, что делает алгоритм, можно визуально прикинуть как он работает, вставив тесты, например.
0
393 / 338 / 83
Регистрация: 17.10.2014
Сообщений: 1,007
12.02.2016, 15:53 4
Цитата Сообщение от Delphian Посмотреть сообщение
Сколько времени Вам в среднем понадобилось, чтобы разобраться в чужой программе?
код бывает очень разные, даже вплоть до ситуации когда написать заново по времени будет быстрее чем разбираться в чужом г0вн0к0де
0
993 / 521 / 102
Регистрация: 19.03.2013
Сообщений: 3,114
Записей в блоге: 19
12.02.2016, 15:58 5
Delphian, Во-первых этот код надо скомпилировать и запустить.
Во-вторых расставить логи для отладки, чтобы понимать при каких действиях что выполняется.
А потом уже разбираться с мелочами.

Мне бы потребовалось два дня, чтобы разобраться.
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
12.02.2016, 16:03  [ТС] 6
YuraAAA, опыт чуть больше года в Java+Android, собственно java изучал, чтобы писать под Android, делал разные программы на Android, но ещё ни разу не занимался разбором чужой программы

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

Добавлено через 1 минуту
chizz, 2 дня это конечно круто, учитывая что там будут бекэнды и разные библиотеки, приложение большое
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
12.02.2016, 16:06 7
Delphian, тогда создайте новый проект, разбейте код на элементарные составляющие и добавляйте в свой проект кусками. Сторонние библиотеки можно просто загуглить.
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
12.02.2016, 16:18  [ТС] 8
ExFau$t, спасибо! Идея хорошая, но есть одна проблема, часто куски проекта настолько взаимосвязаны, что разбить почти нереально, то есть один кусок без другого работать не будет, всё цепляется друг за друга.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
12.02.2016, 16:19 9
Delphian, ставьте заглушки.
0
993 / 521 / 102
Регистрация: 19.03.2013
Сообщений: 3,114
Записей в блоге: 19
12.02.2016, 16:33 10
Delphian, ну 2 дня это на то, чтобы понять примерно, как оно работает. А на то, чтобы что-то изменить/добавить от 5 минут до х.. его знает
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
12.02.2016, 17:11 11
Delphian, наверное, зависит от мастерства ТС и от кода. Когда код писал профессионал, даже иногда без комментариев понятно, что к чему. Но и там встречается много копрокода. Потому что андроидные профессионалы иногда могут жить старыми традициями и вставлять всякие тухлые библиотеки. Или бывшие сишники, пришедшие в Яву, начинают пихать свои массивы вместо коллекций. Обычно уже есть кто-то, кто пишет это приложение, поэтому проще, но всё равно, пару недель минимум, чтобы разобраться в этой философии. А без философии в серьёзных проектах никак. Кто как покуривает, так и пишет. Бывает, начнут с кальянчика, а под утро уже свежачок по углам валяется новые коммиты в репозитории.
Подводных камней особых нет, но иногда бывает засада, что подключенная библиотека на некоторых устройствах глючит, а какие-то возможности там и вовсе отсутствуют. Так что придётся ловить в пруду курить новые библиотеки.
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
12.02.2016, 17:39  [ТС] 12
ExFau$t, когда начинаешь ставить заглушки, то теряется часть смысла, теряешь часть алгоритма и получается, что вроде и понимаешь, что кусок кода делает, а с другой стороны, полной картины не понимаешь.
chizz, вот это х... его знает и самая худшая ситуация, которая может сложиться))
CoolMind, вот самое опасное, что код может быть старый и библиотеки полумёртвые, и, как правильно, Вы заметили могли писать его совсем не спецы в андроид, а оборотни, пришедшие из других языков) и вот тогда в этой философии разобраться будет реально сложно. Хуже всего. что спросить будет не у кого.

Вообще, удивительно, что на эту тему я книг не видел, и что такая частая задача почти нигде не рассматривается серьёзно, а ведь почти уверен, что есть какие-то оптимальные алгоритмы разбора чужого кода.
0
993 / 521 / 102
Регистрация: 19.03.2013
Сообщений: 3,114
Записей в блоге: 19
12.02.2016, 17:40 13
Delphian, исключительно методом тыка. На все возможные программы алгоритмов не напасешься
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
12.02.2016, 18:08 14
Цитата Сообщение от Delphian Посмотреть сообщение
такая частая задача почти нигде не рассматривается серьёзно
Очень серьезно рассматривается, пропихивается и т.д. задача унификации кода (паттерны, например) и если бы все делали все так, как там описано не было бы и проблемы с читаемостью кода. А с другой стороны зайти не возможно, как формализовать то что может быть написано как угодно? Например, придумаем свободный язык(естественный, не язык программирования) на котором можно придумывать свои буквы, слова, предложения и как потом можно описать инструкцию по чтению этого языка, если каждый пишет свои слова своими буквами?)
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
12.02.2016, 18:30 15
Delphian, если Вы возьмёте активность и заблочите все кнопки и интенты никаких смыслов не потеряется, а потом врубайте по одной и смотрите что они делают, когда всё посмотрите, смотрите связи активностей и диалогов.
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
12.02.2016, 18:41  [ТС] 16
Spelcrawler, согласен, дело это сложное, вот поэтому и хочу собраться все мысли, чтобы хоть какой-то алгоритм действий составить!
ExFau$t, спасибо, тоже вариант!

Значит пока составил следующий список действий:
1) Код скомпилировать и запустить, желательно на нескольких девайсах.
2) Проверить библиотеки на валидность.
3) Расставить логи для отладки, изучить последовательность работы приложения.
4) Брать куски кода и вставлять в свою программу.
Из пункта 1-4 на выходе должен понять хоть частично философию программы
5) Философия программы

Пока так
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
12.02.2016, 18:48 17
Delphian, я бы поменял 3 и 4 пункт местами и добавил тесты в конце, не стоит брать этот код как идеал, проверьте критические точки, пока не вставили весь код проще будет найти ошибки и баги.
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
12.02.2016, 21:25 18
Цитата Сообщение от ExFau$t Посмотреть сообщение
Код опытного программиста читается как книга, к тому же android хорош тем, что код всегда разделен на некие части, например, помимо классов есть активности, в них методы жц и т.д, визуально можно разобраться.
ахахахахахаха)))))))))))))))))
0
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 322
13.02.2016, 00:36 19
А чего тут думать - запускаешь приложение режиме дебаг и смотришь что за чем вызывается, можно логов навтыкать в код. А вообще советы вам не помогут если код приложения днищенский, но в тоже время если код написан толково, то и советы не нужны.
0
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
13.02.2016, 11:45  [ТС] 20
Кстати, все говорят о логах, а можно ли как-то автоматически добавить логи в методы? Ведь методов может быть очень много и ручками вставлять лог в каждый это значительные временные затрат!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2016, 11:45
Помогаю со студенческими работами здесь

Как быстро тестить проект на Android
Как при создании проекта на Android быстро тестить его с компьютера либо с телефона, но без...

Как быстро подключить готовую БД SQLite к проекту Android
Решил написать мини гайд по подключению готовой БД, мне это пригодится неоднократно, надеюсь...

Прокси в чужой программе
Доброе время суток Как можно перенаправлять запросы приложений через socks на проксю И гугли так...

Команды чужой программе
Подскажите пожалуйста, Как передать чужой программе следующие команды: 1)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru