2009-08-07 2 views
2

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

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

+2

15000 строк кажется довольно маленьким, на самом деле. –

+0

любые ответы на этот вопрос не являются исключительными для «Java» –

ответ

1

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

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

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

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

Удачи вам!

1

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

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

2

Первоначально вам не нужно понимать каждую строку кода.

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

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

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

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

В то время как вы находитесь на полу, ползаете вокруг, располагаете ноутбуком + google, поэтому вы можете расшифровать все, что вы встретили. Также: Цветные маркеры FLW.

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

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

1

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

0

если у вас есть тесты, изучите их. если нет, то напишите некоторые.

+0

Не пытайтесь писать тесты, пока не поймете базу кода. Я думаю, что это может быть катастрофическим. –

0

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