Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 113
#1

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

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

Всем, добрый день.

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

Заранее, спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2016, 15:33     Как быстро разобраться в чужой программе (Android)?
Посмотрите здесь:

Как разобраться с многопоточностью? Android
Android Как сделать просмотр содержимого в программе, как в браузере
Android Получить иконку чужой программы по названию класса
Android Как правильно сверстать в android
Android Как рисовать графики на Android?
Как создать платёж в программе Android? Android
Куда вставить готовый код в программе Android Studio? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.02.2016, 15:46     Как быстро разобраться в чужой программе (Android)? #2
Delphian, какой у Вас опыт в java?
ExFau$t
213 / 196 / 39
Регистрация: 08.05.2012
Сообщений: 1,117
12.02.2016, 15:52     Как быстро разобраться в чужой программе (Android)? #3
Код опытного программиста читается как книга, к тому же android хорош тем, что код всегда разделен на некие части, например, помимо классов есть активности, в них методы жц и т.д, визуально можно разобраться. Другое дело, разобраться в алгоритме, придуманным другим человеком и записанным в виде int a,b,c; Но, опять же, зная, что делает алгоритм, можно визуально прикинуть как он работает, вставив тесты, например.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
12.02.2016, 15:53     Как быстро разобраться в чужой программе (Android)? #4
Цитата Сообщение от Delphian Посмотреть сообщение
Сколько времени Вам в среднем понадобилось, чтобы разобраться в чужой программе?
код бывает очень разные, даже вплоть до ситуации когда написать заново по времени будет быстрее чем разбираться в чужом г0вн0к0де
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,074
Записей в блоге: 18
Завершенные тесты: 1
12.02.2016, 15:58     Как быстро разобраться в чужой программе (Android)? #5
Delphian, Во-первых этот код надо скомпилировать и запустить.
Во-вторых расставить логи для отладки, чтобы понимать при каких действиях что выполняется.
А потом уже разбираться с мелочами.

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

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

Добавлено через 1 минуту
chizz, 2 дня это конечно круто, учитывая что там будут бекэнды и разные библиотеки, приложение большое
ExFau$t
213 / 196 / 39
Регистрация: 08.05.2012
Сообщений: 1,117
12.02.2016, 16:06     Как быстро разобраться в чужой программе (Android)? #7
Delphian, тогда создайте новый проект, разбейте код на элементарные составляющие и добавляйте в свой проект кусками. Сторонние библиотеки можно просто загуглить.
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 113
12.02.2016, 16:18  [ТС]     Как быстро разобраться в чужой программе (Android)? #8
ExFau$t, спасибо! Идея хорошая, но есть одна проблема, часто куски проекта настолько взаимосвязаны, что разбить почти нереально, то есть один кусок без другого работать не будет, всё цепляется друг за друга.
ExFau$t
213 / 196 / 39
Регистрация: 08.05.2012
Сообщений: 1,117
12.02.2016, 16:19     Как быстро разобраться в чужой программе (Android)? #9
Delphian, ставьте заглушки.
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,074
Записей в блоге: 18
Завершенные тесты: 1
12.02.2016, 16:33     Как быстро разобраться в чужой программе (Android)? #10
Delphian, ну 2 дня это на то, чтобы понять примерно, как оно работает. А на то, чтобы что-то изменить/добавить от 5 минут до х.. его знает
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
12.02.2016, 17:11     Как быстро разобраться в чужой программе (Android)? #11
Delphian, наверное, зависит от мастерства ТС и от кода. Когда код писал профессионал, даже иногда без комментариев понятно, что к чему. Но и там встречается много копрокода. Потому что андроидные профессионалы иногда могут жить старыми традициями и вставлять всякие тухлые библиотеки. Или бывшие сишники, пришедшие в Яву, начинают пихать свои массивы вместо коллекций. Обычно уже есть кто-то, кто пишет это приложение, поэтому проще, но всё равно, пару недель минимум, чтобы разобраться в этой философии. А без философии в серьёзных проектах никак. Кто как покуривает, так и пишет. Бывает, начнут с кальянчика, а под утро уже свежачок по углам валяется новые коммиты в репозитории.
Подводных камней особых нет, но иногда бывает засада, что подключенная библиотека на некоторых устройствах глючит, а какие-то возможности там и вовсе отсутствуют. Так что придётся ловить в пруду курить новые библиотеки.
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 113
12.02.2016, 17:39  [ТС]     Как быстро разобраться в чужой программе (Android)? #12
ExFau$t, когда начинаешь ставить заглушки, то теряется часть смысла, теряешь часть алгоритма и получается, что вроде и понимаешь, что кусок кода делает, а с другой стороны, полной картины не понимаешь.
chizz, вот это х... его знает и самая худшая ситуация, которая может сложиться))
CoolMind, вот самое опасное, что код может быть старый и библиотеки полумёртвые, и, как правильно, Вы заметили могли писать его совсем не спецы в андроид, а оборотни, пришедшие из других языков) и вот тогда в этой философии разобраться будет реально сложно. Хуже всего. что спросить будет не у кого.

Вообще, удивительно, что на эту тему я книг не видел, и что такая частая задача почти нигде не рассматривается серьёзно, а ведь почти уверен, что есть какие-то оптимальные алгоритмы разбора чужого кода.
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,074
Записей в блоге: 18
Завершенные тесты: 1
12.02.2016, 17:40     Как быстро разобраться в чужой программе (Android)? #13
Delphian, исключительно методом тыка. На все возможные программы алгоритмов не напасешься
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
12.02.2016, 18:08     Как быстро разобраться в чужой программе (Android)? #14
Цитата Сообщение от Delphian Посмотреть сообщение
такая частая задача почти нигде не рассматривается серьёзно
Очень серьезно рассматривается, пропихивается и т.д. задача унификации кода (паттерны, например) и если бы все делали все так, как там описано не было бы и проблемы с читаемостью кода. А с другой стороны зайти не возможно, как формализовать то что может быть написано как угодно? Например, придумаем свободный язык(естественный, не язык программирования) на котором можно придумывать свои буквы, слова, предложения и как потом можно описать инструкцию по чтению этого языка, если каждый пишет свои слова своими буквами?)
ExFau$t
213 / 196 / 39
Регистрация: 08.05.2012
Сообщений: 1,117
12.02.2016, 18:30     Как быстро разобраться в чужой программе (Android)? #15
Delphian, если Вы возьмёте активность и заблочите все кнопки и интенты никаких смыслов не потеряется, а потом врубайте по одной и смотрите что они делают, когда всё посмотрите, смотрите связи активностей и диалогов.
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 113
12.02.2016, 18:41  [ТС]     Как быстро разобраться в чужой программе (Android)? #16
Spelcrawler, согласен, дело это сложное, вот поэтому и хочу собраться все мысли, чтобы хоть какой-то алгоритм действий составить!
ExFau$t, спасибо, тоже вариант!

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

Пока так
ExFau$t
213 / 196 / 39
Регистрация: 08.05.2012
Сообщений: 1,117
12.02.2016, 18:48     Как быстро разобраться в чужой программе (Android)? #17
Delphian, я бы поменял 3 и 4 пункт местами и добавил тесты в конце, не стоит брать этот код как идеал, проверьте критические точки, пока не вставили весь код проще будет найти ошибки и баги.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.02.2016, 21:25     Как быстро разобраться в чужой программе (Android)? #18
Цитата Сообщение от ExFau$t Посмотреть сообщение
Код опытного программиста читается как книга, к тому же android хорош тем, что код всегда разделен на некие части, например, помимо классов есть активности, в них методы жц и т.д, визуально можно разобраться.
ахахахахахаха)))))))))))))))))
Hank
49 / 40 / 3
Регистрация: 28.12.2011
Сообщений: 228
13.02.2016, 00:36     Как быстро разобраться в чужой программе (Android)? #19
А чего тут думать - запускаешь приложение режиме дебаг и смотришь что за чем вызывается, можно логов навтыкать в код. А вообще советы вам не помогут если код приложения днищенский, но в тоже время если код написан толково, то и советы не нужны.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2016, 11:45     Как быстро разобраться в чужой программе (Android)?
Еще ссылки по теме:

Скопировать чужой проект в Android Studio Android
Android Как запустить приложение на android 4.0.4
Android Не могу разобраться, как подключать Фрагменты
Есть ли возможность быстро и легко настроить B4A? Или сразу перейти на Android Studio? Basic4Android
Как быстро подключить готовую БД SQLite к проекту Android Android

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

Или воспользуйтесь поиском по форуму:
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 113
13.02.2016, 11:45  [ТС]     Как быстро разобраться в чужой программе (Android)? #20
Кстати, все говорят о логах, а можно ли как-то автоматически добавить логи в методы? Ведь методов может быть очень много и ручками вставлять лог в каждый это значительные временные затрат!
Yandex
Объявления
13.02.2016, 11:45     Как быстро разобраться в чужой программе (Android)?
Ответ Создать тему
Опции темы

Текущее время: 11:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru