Как начинающий программист с небольшим опытом работы в отрасли, мне неприятно изучать новый проект, основанный на многих технологиях, с которыми я не знаком. В проекте, над которым я работаю, около 150 классов с 15000 строк кода, и, поскольку он уделяет большое внимание программированию сокетов и безопасности, в котором у меня нет опыта, я не уверен, с чего мне начать.

Имея ограниченную документацию и помощь, самообучение - мой лучший способ понять этот проект в целом. Я часто обнаруживаю, что трачу слишком много времени на изучение незначительных функций продукта, упуская из виду важные классы, на которых я действительно должен сосредоточиться ... Основная причина, по которой это занимает так много времени, заключается в том, что мне часто приходится заглядывать в Java API ссылаться каждые несколько минут, чтобы понять небольшой блок кода ... Я уверен, что со временем выучу его методом проб и ошибок, но я уверен, что есть несколько полезных советов и рекомендаций, которые я могу использовать :)

2
Midnight Blue 7 Авг 2009 в 22:38

6 ответов

Лучший ответ

Несколько вещей приходят на ум:

  1. Потратьте немного времени на знакомство с JDK и его стандартными классами. На то, чтобы получить знания в первую очередь, потребуется время и гораздо больше времени для проверки спецификации API, но вы также можете потратить некоторое время, просто просматривая страницы, не обращая внимания на конкретную вещь.
  2. Если в вашем проекте используются какие-то фреймворки или библиотеки, вы часто можете получить общее представление о том, что они привносят в проект, прочитав «вводную» страницу на сайте проекта. Я думаю, что это может быть вам особенно полезно, поскольку вы указали на незнание некоторых технологий, используемых в проекте, как на источник разочарования.
  3. Если есть какие-либо тесты функциональной интеграции или регрессии, они часто могут быть хорошим способом понять, каковы основные точки входа в проект. Хорошее понимание высокоуровневой функциональности проекта часто бывает полезным при попытке понять мелкие детали.
  4. Если вы сможете найти в своей команде наставника, который покажет вам основы, это, вероятно, очень поможет.

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

Помните также, что это обязательно будет для вас познавательным опытом. Это один из ваших первых проектов в индустрии, поэтому, возможно, потребуется некоторое время, чтобы к нему привыкнуть. Имейте в виду, что вы не первый, кому придется поплавать в супе из библиотек / фреймворков в незнакомой базе кода.

Удачи!

1
Carl Manaster 7 Авг 2009 в 20:18

Изначально вам не нужно разбираться в каждой строчке кода.

Поручите старшего разработчика на полчаса и попросите его дать вам общее представление об архитектуре - каковы основные блоки кода, как они взаимодействуют и как пользователь / использование передает данные через систему.

Затем потратьте некоторое время на изучение источника модулей, которые, по вашему мнению (после объяснения), дадут вам лучшее представление о том, «как все это работает».

У меня есть (вероятно, довольно странная) привычка распечатывать большие блоки исходного кода и покрывать распечатками пол. Затем я могу встать на колени и ползать по полу ручкой и буквально рисовать стрелки от точки к точке и обводить участки - я считаю, что отображение кода в 2D упрощает понимание вещей. Это также позволяет делать обильные заметки, которые помогают мне более подробно разобраться в потоке.

Вскоре вы начнете распознавать идиомы (стилизованные способы выполнения вещей), которые характеризуют код, и в конечном итоге вы попадете в образ мышления авторов. Тогда все будет намного проще.

Пока вы ползаете по полу, держите под рукой ноутбук + Google, чтобы вы могли расшифровать все странное, с чем столкнетесь. Также: Цветные маркеры FTW.

Сделайте (как минимум) два прохода для понимания источника. В первый раз не пытайтесь понять какие-либо мелочи ... постарайтесь почувствовать «движение» - куда идут данные и куда идет исполнение. Это даст вам основу для вашей ментальной модели кода. В следующий раз вы можете начать разбирать детали, но подход сверху вниз всегда облегчает мне задачу.

Если вы не знакомы с технологиями, языком или окружающей средой, то посмотрите, есть ли поблизости какие-нибудь книги, которые вы можете взять. В реальном мире гораздо больше видимого пространства, чем вы можете уместить на экране компьютера, а наличие Google на ноутбуке, синтаксические ссылки / ссылки на библиотеки в книге и код вокруг вас делают (по крайней мере для меня) весь процесс ОЧЕНЬ проще.

2
Dave Gamble 7 Авг 2009 в 19:35

Изучение кодовой базы требует времени. Я думаю, что общее правило составляет около 3 месяцев для нового разработчика, чтобы он ознакомился с базой кода.

Единственное, что мне действительно помогает, - это экспериментировать и смотреть, что происходит, а также знакомиться с API.

1
Jesse 7 Авг 2009 в 18:56

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

1
Carl Manaster 7 Авг 2009 в 19:01

Если у вас есть тесты, изучите их. если нет, то напишите немного.

0
Ray Tayek 7 Авг 2009 в 19:05

Я предлагаю распечатать то, что мои учителя называли «диаграммами классов», которые содержат только имя класса, имена методов и имена членов. Затем расположите листы на столе / стене и выясните, какой класс с каким классом разговаривает, какой метод с каким методом и т. Д. Сделайте стрелки и соединения между классами / методами. Попытайтесь нащупать код. Вначале важно понимать не то, что делает строка кода, а то, что должен делать метод / класс, чтобы вы понимали основной поток данных.

0
Adrian Jandl 24 Июл 2013 в 13:59