/ Новости и уроки / Как читать чужой код?

Как читать чужой код?

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

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

Проблема

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

Решение

Итак, что вы будете делать, когда столкнетесь с новой кодовой базой? Сбор требований обычно является первым этапом любого крупного проекта, и важной частью этого всегда является общение с потенциальными пользователями системы. Чтобы исправить программу, сначала нужно понять проблемы, которые она пытается решить. Обычно есть причина, почему все делается определенным образом. Помните. Работа с чужим кодом - это норма, а не исключение, и важной частью этого становится становление знатоком и выяснение того, как работают другие программисты. Приняв их стиль при продолжении их работы, вы также упростите задачу следующему разработчику.

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

Итак, как мы можем начать ломать вещи? Один из методов, который настоятельно рекомендует сообщество, - это установить точку остановки для методов, которые вызывают поведение, которое вас беспокоит. Если изменение строки кода вызывает неожиданные изменения в других местах, установите точку останова на этой строке и посмотрите, что произойдет. У вас есть много информации о состоянии среды выполнения после достижения точки останова. Точки остановки останавливают выполнение кода на определенной строке, и оттуда вы можете увидеть из трассировки стека, как код попал туда. Используйте функции step into и step out, чтобы увидеть, что делают разные методы и как распространяются события в приложении. Это научит вас кое-чему о структуре кодовой базы.

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

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

Заключение

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