Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

Скопировать чужой проект в Android Studio - Программирование Android
У меня диске D в определенной папке есть чужой проект. Когда я этот проект копирую вместе со всей папкой в другое место потом даже...

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

Куда вставить готовый код в программе Android Studio? - Программирование Android
Вставил код из "Урок 58" ссылка - http://startandroid.ru/ru/uroki/vse-uroki-spiskom/117-urok-58-dialogi-timepickerdialog.html как...

Android studio, как запускать программу сразу на android смартфоне подключенному к usb? - Программирование Android
android studio, как запускать программу сразу на android смартфоне подключенному к usb?

Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал - Программирование Android
Уже не в первый раз задаю вопрос. Молчание. В лучшем случае - "RTFM" и точка. Так вот, официального мануала, где есть ответ на...

20
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
12.02.2016, 15:46 #2
Delphian, какой у Вас опыт в java?
0
ExFau$t
360 / 346 / 68
Регистрация: 08.05.2012
Сообщений: 1,749
12.02.2016, 15:52 #3
Код опытного программиста читается как книга, к тому же android хорош тем, что код всегда разделен на некие части, например, помимо классов есть активности, в них методы жц и т.д, визуально можно разобраться. Другое дело, разобраться в алгоритме, придуманным другим человеком и записанным в виде int a,b,c; Но, опять же, зная, что делает алгоритм, можно визуально прикинуть как он работает, вставив тесты, например.
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 855
12.02.2016, 15:53 #4
Цитата Сообщение от Delphian Посмотреть сообщение
Сколько времени Вам в среднем понадобилось, чтобы разобраться в чужой программе?
код бывает очень разные, даже вплоть до ситуации когда написать заново по времени будет быстрее чем разбираться в чужом г0вн0к0де
0
chizz
981 / 496 / 54
Регистрация: 19.03.2013
Сообщений: 3,095
Записей в блоге: 18
Завершенные тесты: 1
12.02.2016, 15:58 #5
Delphian, Во-первых этот код надо скомпилировать и запустить.
Во-вторых расставить логи для отладки, чтобы понимать при каких действиях что выполняется.
А потом уже разбираться с мелочами.

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

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

Добавлено через 1 минуту
chizz, 2 дня это конечно круто, учитывая что там будут бекэнды и разные библиотеки, приложение большое
0
ExFau$t
360 / 346 / 68
Регистрация: 08.05.2012
Сообщений: 1,749
12.02.2016, 16:06 #7
Delphian, тогда создайте новый проект, разбейте код на элементарные составляющие и добавляйте в свой проект кусками. Сторонние библиотеки можно просто загуглить.
0
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
12.02.2016, 16:18  [ТС] #8
ExFau$t, спасибо! Идея хорошая, но есть одна проблема, часто куски проекта настолько взаимосвязаны, что разбить почти нереально, то есть один кусок без другого работать не будет, всё цепляется друг за друга.
0
ExFau$t
360 / 346 / 68
Регистрация: 08.05.2012
Сообщений: 1,749
12.02.2016, 16:19 #9
Delphian, ставьте заглушки.
0
chizz
981 / 496 / 54
Регистрация: 19.03.2013
Сообщений: 3,095
Записей в блоге: 18
Завершенные тесты: 1
12.02.2016, 16:33 #10
Delphian, ну 2 дня это на то, чтобы понять примерно, как оно работает. А на то, чтобы что-то изменить/добавить от 5 минут до х.. его знает
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
12.02.2016, 17:11 #11
Delphian, наверное, зависит от мастерства ТС и от кода. Когда код писал профессионал, даже иногда без комментариев понятно, что к чему. Но и там встречается много копрокода. Потому что андроидные профессионалы иногда могут жить старыми традициями и вставлять всякие тухлые библиотеки. Или бывшие сишники, пришедшие в Яву, начинают пихать свои массивы вместо коллекций. Обычно уже есть кто-то, кто пишет это приложение, поэтому проще, но всё равно, пару недель минимум, чтобы разобраться в этой философии. А без философии в серьёзных проектах никак. Кто как покуривает, так и пишет. Бывает, начнут с кальянчика, а под утро уже свежачок по углам валяется новые коммиты в репозитории.
Подводных камней особых нет, но иногда бывает засада, что подключенная библиотека на некоторых устройствах глючит, а какие-то возможности там и вовсе отсутствуют. Так что придётся ловить в пруду курить новые библиотеки.
0
Delphian
0 / 0 / 0
Регистрация: 14.08.2012
Сообщений: 138
12.02.2016, 17:39  [ТС] #12
ExFau$t, когда начинаешь ставить заглушки, то теряется часть смысла, теряешь часть алгоритма и получается, что вроде и понимаешь, что кусок кода делает, а с другой стороны, полной картины не понимаешь.
chizz, вот это х... его знает и самая худшая ситуация, которая может сложиться))
CoolMind, вот самое опасное, что код может быть старый и библиотеки полумёртвые, и, как правильно, Вы заметили могли писать его совсем не спецы в андроид, а оборотни, пришедшие из других языков) и вот тогда в этой философии разобраться будет реально сложно. Хуже всего. что спросить будет не у кого.

Вообще, удивительно, что на эту тему я книг не видел, и что такая частая задача почти нигде не рассматривается серьёзно, а ведь почти уверен, что есть какие-то оптимальные алгоритмы разбора чужого кода.
0
chizz
981 / 496 / 54
Регистрация: 19.03.2013
Сообщений: 3,095
Записей в блоге: 18
Завершенные тесты: 1
12.02.2016, 17:40 #13
Delphian, исключительно методом тыка. На все возможные программы алгоритмов не напасешься
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
12.02.2016, 18:08 #14
Цитата Сообщение от Delphian Посмотреть сообщение
такая частая задача почти нигде не рассматривается серьёзно
Очень серьезно рассматривается, пропихивается и т.д. задача унификации кода (паттерны, например) и если бы все делали все так, как там описано не было бы и проблемы с читаемостью кода. А с другой стороны зайти не возможно, как формализовать то что может быть написано как угодно? Например, придумаем свободный язык(естественный, не язык программирования) на котором можно придумывать свои буквы, слова, предложения и как потом можно описать инструкцию по чтению этого языка, если каждый пишет свои слова своими буквами?)
0
ExFau$t
360 / 346 / 68
Регистрация: 08.05.2012
Сообщений: 1,749
12.02.2016, 18:30 #15
Delphian, если Вы возьмёте активность и заблочите все кнопки и интенты никаких смыслов не потеряется, а потом врубайте по одной и смотрите что они делают, когда всё посмотрите, смотрите связи активностей и диалогов.
0
12.02.2016, 18:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2016, 18:30
Привет! Вот еще темы с ответами:

Android NDK. Как пользоваться? Когда стоит использовать его вместо Android SDK? - Программирование Android
Можно ли писать в нем готовые приложения Android?

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

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

Как быстро тестить проект на Android - Unity, Unity3D
Как при создании проекта на Android быстро тестить его с компьютера либо с телефона, но без установки? Т.е. не скидывая на телефон, затем...


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

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

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