Статьи

Как вы работаете с чужим кодом?

Работа с кодом, созданным другими людьми, является фундаментальным навыком для разработчика. Дайте ему год, и код других людей может быть даже вашим.

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

Чтобы упростить процесс, я описываю свой подход в следующих областях:

  • Взаимодействовать
  • соблюдать
  • Выполнить тесты
  • Исправление ошибок, предназначенных для новичков
  • Найти доступные ресурсы
  • Используйте хорошую IDE
  • Читать книги и блоги
  • Внести свой вклад в документацию
  • Быть внимательным

Давайте начнем.

Взаимодействовать

Кто ведущие разработчики? Где они? Они доступны прямо в вашем офисе? Если это так, поговорите с ними или напишите им. Эти люди должны быть лучшими источниками знаний о проекте.

Вы удаленный работник или фрилансер? Какие каналы связи есть у проекта или компании? Разработчики на IRC, Slack , Twitter, электронной почте, Trello или что-то еще?

Убедитесь, что вы там, где они есть. В Zend Framework 2 часто критикуют за то, что нет активного сообщества. Это не так, поскольку IRC-канал работает ежедневно. Поэтому убедитесь, что вы находитесь там, где находятся разработчики и другие члены команды.

соблюдать

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

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

Основы кода требуют времени для изучения, поскольку они наделены идеями , предубеждениями , убеждениями и подходами всех разработчиков, которые работали над проектом. Учитывая, что вы новичок, у вас не будет никаких базовых знаний.

Вот 5 хороших способов начать:

  • Потратьте время, чтобы пройти через все
  • Задавать вопросы
  • Настроить тестовую установку
  • Попытка использовать тестовую установку
  • Прочитайте комментарии к коду и соответствующую документацию

Не усердствуйте в себе, дайте себе шанс хорошо начать. Через некоторое время вы начнете лучше понимать, как приложение было создано.

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

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

Выполнить тесты

приработки PHPUnit

Любая хорошая кодовая база должна иметь тесты. Если это не так, это не хороший знак. Это не должно быть коварно — это может быть просто разработчик или команда разработчиков, которые никогда не проводили тестирование — но я был бы более чем обеспокоен, если бы их не было.

Если есть тесты, запустите их. Они проходят? Я сталкивался с более чем одной исходной кодовой базой, в которой есть набор тестов, которые, кажется, никто не мог запустить. Они были в курсе?

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

Исправление ошибок, предназначенных для новичков

Еще один простой способ начать — исправить ошибки в проекте, предназначенные для новичков или более молодых разработчиков. Два хороших примера — Joind.In и ownCloud , трекер ошибок для последнего, который вы можете увидеть на скриншоте ниже.

OwnCloud

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

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

Найти доступные ресурсы

Одна из лучших вещей, которую вы можете сделать, взяв на себя кодовую базу или вступив в существующую команду, — это собрать как можно больше ресурсов вместе. Не уверены, что искать? Вот несколько идей, с которых можно начать:

Используйте хорошую IDE

PhpStorm-подсветку синтаксиса

Хорошие IDE ценятся на вес золота. Независимо от того, являетесь ли вы разработчиком на Ruby , Python , Go , Java , PHP или другом языке, найдите хорошую IDE, специально предназначенную или подходящую для вашего языка.

Я ценю, что некоторые люди — пуристы, предпочитающие VIM или Emacs, и это нормально. Но я любитель IDE, и моя IDE — PhpStorm . Есть много других, таких как Eclipse , TextMate , SublimeText и VisualStudio .

Как только вы нашли для себя среду IDE, начните использовать функции, которые она предлагает. Я сделаю ссылку на PhpStorm специально здесь, но применим эти принципы к вашей IDE по вашему выбору.

Начните шагать по коду и посмотрите, соответствует ли он стандарту. Это не должен быть формальный стандарт, такой как PHP PSR . Но разработчики придерживались последовательного стиля, или это повсеместно. Используйте инструменты, такие как детектор беспорядка и тестер цикломатической сложности, чтобы начать оценивать качество кода.

Есть ли документация по коду? Если это так, ваша среда IDE сможет использовать ее при проверке кода. Затем воспользуйтесь пошаговым отладчиком, таким как xhprof , Xdebug или Zend Debugger , и запустите приложение, чтобы увидеть, как оно работает.

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

Читать и учиться

Это особенный для меня лично. Чем больше мы учимся, тем больше мы можем расти и — в результате — делать. Мы не первые, кто идет по пути, по которому мы идем. Многие, многие, другие предстали перед нами и совершили множество ошибок, которые мы, вероятно, допустим.

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

Один из моих личных фаворитов — Мартин Фаулер , который также опубликовал большую книгу на тему рефакторинга . Есть и другие отличные книги, такие как Design Patterns , и веб-сайты, такие как SourceMaking.com .

Сделайте себе одолжение и продолжайте инвестировать в такие ресурсы, как эти. Это не всегда легко, но может быть чрезвычайно полезным.

Внести свой вклад в документацию

Это то, чего я мало делаю. Легко быть креативным критиком, сидя в стороне и критикуя кодовую базу, фреймворк или другой вид программного проекта. Вместо того, чтобы делать это, входите и принимайте участие.

Документация не для неудачных программистов, дизайнеров или нетехнических людей. Некоторые из крупнейших проектов активно предполагают, что лучше всего начать с документации.

Один из самых известных проектов, который делает это, — ядро Linux . Что может быть лучше для изучения чего-либо, чем документировать это? В конце концов, если вы действительно это знаете, только тогда вы сможете документировать это.

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

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

Некоторые из лучших разработчиков, которых я знаю, например, прекрасная Лорна Джейн , начали вести блог таким образом. Она вела блог, чтобы вести учет того, что она изучала, что впоследствии превратилось в один из самых популярных PHP-блогов.

Быть внимательным

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

Более того, на каком уровне мастерства вы находитесь? Нам, когда мы моложе, новее и менее опытны, может быть легко судить других.

Мы думаем, что знаем все это и что наши ожидания, концепции и подходы — верный и правильный путь. Но так ли это на самом деле? Мне нравится верить, что по мере того, как мы становимся старше и становимся немного старше, мы также становимся мудрее и становимся более восприимчивыми к широкому спектру существующих подходов к разработке программного обеспечения.

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

Завершение

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