Он хранится в нескольких файлах. Он использует разные классы с разными методами. Код большой и сложный.
Все Java код, написанный за пределами школы, как это, в частности, для нового разработчика, начиная от проекта.
Это старый вопрос, но поскольку это происходит в поисковых системах Google, я добавляю свой ответ здесь, чтобы он мог быть полезен будущим посетителям. Позвольте мне также сообщить, что я являюсь автором MaintainJ.
Не пытайтесь понять целое приложение
Позвольте мне спросить вас - почему вы хотите, чтобы понять код?Скорее всего, вы исправляете ошибку или улучшаете функцию приложения. Первое, что вы не должны пытаться сделать, это понять все приложение. Попытка понять всю архитектуру при запуске заново в проекте будет просто подавлять вас.
Поверьте мне, когда я это скажу - разработчики с более чем 10-летним опытом надежного кодирования могут не понимать, как определенные части приложения работают даже после работы над одним и тем же проектом более года (при условии, что они не являются оригинальными разработчиками). Они могут не понимать, как работает аутентификация или как работает управление транзакциями в приложении. Я говорю о типичных корпоративных приложениях с классами 1000-2000 и использую разные структуры.
Два важных навыков, необходимых для поддержания больших приложений
Тогда как они выживают и платят большие деньги? Опытные разработчики обычно понимают, что они делают; смысл, если они исправят ошибку, они найдут местоположение ошибки, затем исправьте ее и убедитесь, что она не сломает остальную часть приложения. Если им нужно улучшить функцию или добавить новую функцию, большую часть времени им просто нужно подражать существующей функции, которая делает аналогичную вещь.
Есть два важных навыка, которые помогают им сделать это.
Они могут анализировать влияние изменений (изменений), которые они выполняют при исправлении ошибки. Сначала они обнаруживают проблему, меняют код и проверяют его, чтобы убедиться, что он работает. Затем, потому что они хорошо знают язык Java и «достаточно хорошо», они могут определить, не сломает ли он какие-либо другие части приложения. Если нет, они сделаны.
Я сказал, что им просто нужно подражать, чтобы улучшить приложение. Чтобы эффективно имитировать, нужно хорошо знать Java и хорошо понимать рамки. Например, когда они добавляют новый класс Action Struts и добавляют в конфигурацию xml, они сначала найдут подобную функцию, попытаются следить за потоком этой функции и понять, как она работает. Возможно, им придется настроить немного конфигурации (например, данные «формы» находятся в «запросе», чем в области «сеанс»). Но если они хорошо знают рамки, они могут легко это сделать.
Суть, вам не нужно, чтобы понять, что все классы 2000 делают, чтобы исправить ошибку или улучшить приложение. Просто поймите, что нужно.
Фокус на доставку непосредственного значения
Так я обескураживающее вас от понимания архитектуры? Нет, совсем нет. Все, что я прошу вас, это доставить. После того, как вы начнете проект, и как только вы настроите среду разработки на своем ПК, вы не должны тратить больше недели на то, чтобы что-то сделать, сколь бы маленькой она ни была. Если вы опытный программист и не делаете ничего через 2 недели, как менеджер может знать, действительно ли вы работаете или читаете спортивные новости?
Итак, чтобы сделать жизнь проще для всех, доставить что-то. Не ходите с отношением, которое вам нужно, чтобы понять все приложение, чтобы доставить что-то ценное. Это совершенно неверно. Добавление небольшой и локализованной проверки Javascript может быть очень ценным для бизнеса, и когда вы его доставляете, менеджер чувствует облегчение, что у него есть определенная ценность для его денег. Более того, это дает вам время для чтения спортивных новостей.
По прошествии времени и после доставки 5 небольших исправлений вы начнете медленно понимать архитектуру. Не стоит недооценивать время, необходимое для понимания каждого аспекта приложения. Дайте 3-4 дня, чтобы понять аутентификацию. Может быть 2-3 дня, чтобы понять управление транзакциями. Это действительно зависит от приложения и вашего предыдущего опыта в аналогичных приложениях, но я просто даю оценку шара. Украдите время между фиксацией дефектов. Не просите об этом времени.
Когда вы что-то понимаете, пишете заметки или рисуете диаграмму модели/последовательности/данных.
Диаграммы
Хааа ... это я так долго упомянуть диаграммы :). Я начал с раскрытия, что я являюсь автором MaintainJ, инструмента, который генерирует графики последовательности выполнения. Позвольте мне рассказать вам, как это может вам помочь.
Большая часть обслуживания - найти источник проблемы или понять, как работает функция.
Сгенерированные диаграммы последовательности MaintainJ показывают поток вызовов и поток данных для одного варианта использования. Итак, на простой диаграмме последовательности вы можете увидеть, какие методы вызывают для использования. Итак, если вы исправляете ошибку, ошибка, скорее всего, является одним из этих методов. Просто исправьте его, убедитесь, что он ничего не сломал и не вышел.
Если вам нужно улучшить функцию, поймите поток вызовов этой функции, используя диаграмму последовательности, а затем увеличьте ее. Усовершенствование может быть похоже на добавление дополнительного поля или добавление новой проверки и т. Д. Обычно добавление нового кода менее рискованно.
Если вам нужно добавить новую функцию, найдите другую функцию, похожую на то, что вам нужно разработать, понять поток вызовов этой функции, используя MaintainJ, а затем имитировать ее.
Звучит просто? Это на самом деле просто, но будут случаи, когда вы будете делать большие улучшения, такие как создание совершенно новой функции или что-то, что влияет на фундаментальный дизайн приложения. К тому времени, когда вы пытаетесь что-то подобное, вы должны быть знакомы с приложением и хорошо понимать архитектуру приложения.
Два предостережений к моему аргументу выше
Я упомянул, что добавление кода является менее рискованным, чем изменение существующего кода. Поскольку вы хотите избежать изменения, у вас может возникнуть соблазн просто скопировать существующий метод и добавить к нему, а не изменять существующий код. Сопротивляйтесь этому искушению. Все приложения имеют определенную структуру или «единообразие». Не разрушайте его с помощью плохих методов, таких как дублирование кода. Вы должны знать, когда вы отклоняетесь от «единообразия». Попросите старшего разработчика проекта рассмотреть изменения. Если вы должны сделать что-то, что не соответствует соглашениям, по крайней мере, убедитесь, что оно локально для небольшого класса (частный метод в классе 200 строк не разрушит эстетику приложения).
Если вы следуете описанному выше подходу, хотя вы можете много лет прожить в отрасли, вы рискуете не понимать архитектуры приложений, что в долгосрочной перспективе не очень хорошо. Этого можно избежать, работая над большими изменениями или просто меньше времени на Facebook. Потратьте время, чтобы понять архитектуру, когда вы немного свободны и документируете ее для других разработчиков.
Заключение
Фокус на непосредственное значение и использовать инструменты, которые обеспечивают, но не ленитесь. Инструменты и диаграммы помогают, но вы можете обойтись и без них. Вы можете следовать моим советам, просто потратив некоторое время на старшего разработчика проекта.
Этот вопрос касается не рекомендаций книги, инструмента, библиотеки программного обеспечения, учебника или другого ресурса за пределами площадки. Этот вопрос касается помощи в процессе. В какой-то момент каждый должен иметь дело с большой незнакомой кодовой базой, и этот вопрос состоит в том, чтобы спросить, с чего начать. –