2016-07-20 3 views
0

Я новичок в задании, и унаследовал большой код java/mobile base. Он может содержать сотни java-файлов. Я этого не понимаю. Документальной документации практически нет. Моя работа - понять код и как он работает. Какую стратегию или совет вы можете дать, что может помочь мне решить эту проблему?стратегия по пониманию большой базы кода

То, что я пробовал до сих пор, заключается в том, что я рассмотрел конкретную функцию в приложении - функцию печати - и поставил точки останова в коде и просто попытался следовать за выполнением. До сих пор я только обнаружил, какие классы вызываются в каком порядке. Тем не менее, я чувствую, что этот способ может обеспечить ограниченное понимание этого сложного приложения. Я также просил работать над определенной функцией приложения, и кто-то может наставлять меня на то, как это работает, но у людей нет времени на это. Вы можете порекомендовать что-нибудь еще?

+1

Этот вопрос довольно широк и приведет к «основанным на мнениях» ответам; так что здесь оффтоп. Вы можете попытаться спросить на quora.com. Мое мнение: есть некоторые инструменты, которые пытаются вывести структуру/архитектуру из существующего исходного кода. Сначала вы используете такие инструменты, чтобы получить приблизительное понимание **, что ** составляет ваше приложение. Просто слепо отладка в какой-то области, скорее всего, не поможет. Но еще важнее: попытаться определить людей, которые раньше работали с системой; или даже лучше: те эксперты домена, которые понимают, что приложение должно делать. Тогда: поговорите с ними! – GhostCat

+0

Другой вопрос, это то, что отличает гениального программиста от среднего, что он может решить эту проблему и может выяснить, как все это работает быстрее, чем средний парень, и поэтому может начать генерировать код в течение нескольких дней? Это то, что ищут менеджеры? –

+1

Опять же, ответ «это зависит». Я считаю, что наиболее важным навыком, необходимым для анализа огромных существующих базовых кодов, является ** опыт **. Когда вы работали с 5, 10, 20 подобными вещами в прошлом, вы можете быстрее находить «шаблоны» (потому что вы также знаете, что именно искали). Когда вы делаете это в первый раз, вы изучаете много вещей в один и тот же момент времени. Мало кто в этом хорош. В этом случае ваша «основная компетенция» будет способностью к систематической работе. Но, пожалуйста, обратите внимание: SO не является местом для таких обсуждений. Возможно, вам стоит обратиться к quora.com ... – GhostCat

ответ

1

Я прошел то же самое с большим приложением, которое унаследовал. Я использовал два разных инструмента, чтобы помочь мне делать цифровые заметки. Я использовал Mindmup (an online mind mapping tool, free, no download), чтобы отслеживать, что я изучал, и как переучивать его при следующем посещении приложения. Я также использовал StarUML (a free, downloaded, UML tool). Я использовал его для создания диаграмм процессов, потоков, зависимостей, объектов в приложении. Конечно, задокументируйте материал в текстовом файле.

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

2

Если у вас нет фона в Java, я бы предложил прочитать некоторую документацию на фреймворке, в котором написано программное обеспечение. Это может быть Spring например или что-то совершенно другое, но поскольку нет любая документация, доступная в самом проекте, может стать более понятной, если у вас есть четкое представление о том, как работает сама инфраструктура.

Кроме того, вы могли бы (если у вас есть время для этого) создать диаграмму эскиза и записать/напечатать некоторые потоки, как вы это делали раньше, с точками останова и попытками следовать коду.

Сначала это может показаться подавляющим, но вы скоро это снимете.

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

+0

Другой вопрос, это то, что отличает гениального программиста от среднего, что он может решить эту проблему и может понять, как все это работает быстрее, чем средний парень, и поэтому может начаться производя код в течение нескольких дней? Это то, что ищут менеджеры? –

+0

Вы, кажется, ошибаетесь, гений для опытных. Поднимая проект и зная, что делает каждый модуль или движущаяся часть, приходит с опытом; чем опытнее вы, тем легче вы можете забрать проект и начать фактически работать, а не учиться. Это позор, что у вас нет супервизора или человека, который работал над проектом, чтобы провести вас через него. Не обвиняйте себя, без документации или передачи обслуживания, для ознакомления с продуктом требуется определенное количество времени. –

0

Вы можете попытаться отменить разработку своего Java-кода в UML-модель, а затем создать несколько диаграмм путем перетаскивания классов, которые вы хотите изучить.

Это даст вам хорошее представление о существующих классах, свойствах и отношениях. GenMyModel предлагает эту функцию непосредственно в сети, не устанавливая ничего: see documentation

0

Получите хорошую информацию о бизнес-логике в первую очередь.

Смежные вопросы