Как стать автором
Обновить

Комментарии 16

Люблю легаси код, прямолинейно и в лоб. Если человек что-то не понимает, то сразу видно, что, т.к. он вместо одного подхода применяет излишки. В регионах легаси очень частый и в некоторых местах он оправдан и своего рода красив, разбираться в этом коде, все ровно что прочитать мемуар компании, вся история разработки, вся боль в этих клочках.
А чистый легаси javascript с asp.net вообще читается на ура. Только не с первого раза :D
Доклад шикарный.

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

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

Практика одна, если будет простор для отладки — тогда можно без страха вникать в суть каждого винтика. По факту основа — отладка и время для разбора.
Мне кажеться, что основная проблема чтения и модификации чужого кода в сложности понимания работы системы в целом и взаимодействии ее компонентов между собой. Я бы рекомендовал следовать советам автора и начать с компиляции/запуска системы локально/настройке дебагера. Потом выбрал бы фичу поменьше и прошелся дебагером по ней. По сути начать с индуктивного подхода (вначале изучаем маленькие, понятные, куски системы и потихоньку формировать общее представление) и постепенно совмещать его с дедуктивным методом (когда идем от общего к частному).
Так же, ключевым является умение пользоваться текстовым поиском и другим инструментарием навигации в IDE/редакторе. Умение пользоваться дебагером — must have.
Ну и проводя похожую аналогию со строительством, как по мне, чтение кода системы это как ходить по зданию с смотреть на его узлы, изучать прокладку кабелей и сантехники. Намного проще взглянуть на проектную документацию и все понять. В разработке софта, иметь высокоуровневую документацию необходимо, но стоимость ее сопровождения повышается вместе с увеличением уровня детализации (так что много проектов, к сожалению, не имеет высокоуровневых диаграмм компонентов и их взаимодействия)

В 95% проектов, в которых я участвовал документация скорее даже мешала. Потому что не тратилось достаточно ресурсов на её ведение и документация как правило была сильно устаревшей. Только один раз был проект, делавшийся практически по канбану, где каждая задача включала обязательную разработку/обновление документации. И это делало практически бесплатным введение новых людей в проект.
Отладчиком пользоваться умею, впрочем как и читать код. Проблема в том что я слишком часто возвращаюсь к типичным мыслям юных разработчиков — переписать всё нафиг (хотя сисадминский опыт из детства кричит с другой стороны, что «работает, не трогай»). И начинаю часто отвлекаться на мелочи типа, вот тут надо по ссылке передать, а не shared_ptr плодить, вот тут сырые указатели, тут нет const, тут класс надо разбить на несколько, чтобы SOLID получился, там метод слишком длинный, сложный для отладки и т.п. Всё это в целом мешает главному — пониманию общей архитектуры проекта и уже более детальному пониманию каких-то узлов.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Нет. Как минимум в сегодняшнем виде.
Были прецеденты.
Дали «рабочий» проект на Go, я его не смог собрать с первого раза.
Пришлось разбираться.
Оказалось использовалась сторонняя библиотека, которая использовала другую библиотеку, в которой поменялся контракт всех функций.
Ребята похоже только «экспериментировали» с Go.
Поэтому передали только свой код.
А не все модули которые использовали.
Вроде бы во второй версии все таки собираются ввести модули-ад :-)

Перл. Сокращает время чтения чужого кода до нуля.

В зале никто не имел дела с MUMPS?
И что, неужели не нашлось ни одного кашиста?
Вроде не олдфаг, но MUMPS — очень интересная система, люблю ее.
Ну, в этом докладе ещё до перевода была проделана ощутимая работа по cultural references: Дилан с ним уже выступал за рубежом, но только в России использовал примеры вроде Тату и Андрея Акиньшина. Поэтому в переводе под Россию почти ничего не адаптировали, пусть остаётся видение спикера.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий