0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
|
|
1 | |
Как быстро разобраться в чужой программе (Android)?12.02.2016, 15:33. Показов 4190. Ответов 20
Метки нет (Все метки)
Всем, добрый день.
Мне необходимо понять и изменить код в программе, которую писал другой android- программист. В связи с этим хотел узнать Ваш опыт или методику, поделитесь, пожалуйста, своим опытом как Вы разбирали чужой код и какие есть подводные камни? Код очень большой, много классов и так далее. Сколько времени Вам в среднем понадобилось, чтобы разобраться в чужой программе? Заранее, спасибо!
0
|
12.02.2016, 15:33 | |
Ответы с готовыми решениями:
20
Как разобраться в чужой CMS? Как обнаружить текст в чужой программе? Как выбрать закладку RzPageControl в чужой программе Как быстро разобраться с CMS? |
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 |
код бывает очень разные, даже вплоть до ситуации когда написать заново по времени будет быстрее чем разбираться в чужом г0вн0к0де
0
|
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
|
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
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
12.02.2016, 18:08 | 14 |
Очень серьезно рассматривается, пропихивается и т.д. задача унификации кода (паттерны, например) и если бы все делали все так, как там описано не было бы и проблемы с читаемостью кода. А с другой стороны зайти не возможно, как формализовать то что может быть написано как угодно? Например, придумаем свободный язык(естественный, не язык программирования) на котором можно придумывать свои буквы, слова, предложения и как потом можно описать инструкцию по чтению этого языка, если каждый пишет свои слова своими буквами?)
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
|
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
|
13.02.2016, 11:45 | |
Помогаю со студенческими работами здесь
20
Как быстро тестить проект на Android Как быстро подключить готовую БД SQLite к проекту Android Прокси в чужой программе Команды чужой программе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |