Здравствуйте, magnum2005, Вы писали:
M>Вот взяли вас на работу (php, legacy). Как вы разбираетесь в чужом коде? Есть какая-то методика?
Сверху и снизу. Очень важно первым делом поймать кого-нибудь знающего и расспросить о структуре системы/приложения. Из каких условно модулей состоит, как эти модули между собой взаимодействуют, какими данными обмениваются.
Затем можно заняться реверс-инжинирингом снизу: взять конкретную задачу и разобраться, как оно работает. Можно параллельно делать работу, которую не сделали предыдущей программисты — откомментить модели данных и важные методы
Вопрос непонятен. Берешь и разбираешься.
Это как если бы инженер-электронщик спросил: "а как вы разбираетесь в чужих принципиальных схемах?",
или инженер-механик спросил то же самое о чертежах.
Конечно, чем больше информации о коде тем лучше. Для чего он, что делает. Комментарии тоже неплохо бы
Здравствуйте, CRT, Вы писали:
CRT>Вопрос непонятен. Берешь и разбираешься. CRT>Это как если бы инженер-электронщик спросил: "а как вы разбираетесь в чужих принципиальных схемах?", CRT>или инженер-механик спросил то же самое о чертежах.
M>Вот взяли вас на работу (php, legacy). Как вы разбираетесь в чужом коде? Есть какая-то методика?
Глазами читать.
Смотреть тесты. Проходить их под debugger'ом, если код линейный. Искать аналогии (очень мало какой код написан в первый раз, почти всегда это copy-paste откуда-то еще, часто со stackoverflow, и тогда можно понять, что код должен делать).
N>>когда закорюку в одном месте поправишь — выстрелит в 10 местах, о существовании которых ты даже не подозревал.
_>code-review же есть, местные гуру тебе сразу скажут, где и как твоя правка может выстрелить
Тут скорее не code-review надо, а "нам бы схемку аль чертеж". Чтобы было разрисовано что от чего зависит и что с чем взаимодействует. Пусть даже не на формализованном языке вроде UML, а хотя бы на бумажке от руки нарисованную.
Впрочем, если такой схемки нет и нарисовать ему некому — можно попытаться воссоздать ее через code-review.
Здравствуйте, Sheridan, Вы писали:
N>>>когда закорюку в одном месте поправишь — выстрелит в 10 местах, о существовании которых ты даже не подозревал. _>>code-review же есть S>Далеко не всегда. Особенно если легаси, которое не трогали некоторое время.
т.е. есть конторы, где позволяют править код не проводя code-review этих изменений? бежаааать...
Здравствуйте, mike_rs, Вы писали:
_>т.е. есть конторы, где позволяют править код не проводя code-review этих изменений? бежаааать...
Есть конторы, которые "К нам пришол заказчик, у него есть древнее (веб)приложение, ему надо дописать...". Тоже бежать?
Здравствуйте, Sheridan, Вы писали:
S>Есть конторы, которые "К нам пришол заказчик, у него есть древнее (веб)приложение, ему надо дописать...". Тоже бежать?
Вот за Web я бы не взялся. Я в нем практически полный если не гуманитарий, то теоретик.
На матан я бы посмотрел. Я многое успел основательно забыть. Помню только, что там не точность охрененная нужна, а относительная погрешность вычислений должна быть не более оговоренной. Многие сегодня считают, что это одно и то же.
А вот за проект эпохи динозавров на каком-нибудь Коболе я бы взялся. Хоть имел дело с Коболом заметно меньше, чем с Фортраном. Но опыт, приобретенный во время работы на Фортране (там как раз был уже неновый проект) мне бы безусловно пригодился.
Я к тому, что и предметная область имеет значение.
Здравствуйте, Sheridan, Вы писали:
S>Смотря что сделать нужно.
Тут в голову приходит только "раньше было лучше". Раньше работали командой, в которую входили архитекторы, разработчики, тестировщики, админы (системные и баз данных), писатели доументации. А сегодня куда ни кинь, кругом одни айтишники.
Поэтому сегодня и вырос спрос на динозавров. Знаю дядьку, ему под 70, он на пенсии. Но его постоянно дергают. Среди современных айтишников нет ему замены.
Здравствуйте, magnum2005, Вы писали:
M>Вот взяли вас на работу (php, legacy). Как вы разбираетесь в чужом коде? Есть какая-то методика?
Я начинаю делать небольшие рефакторинги и улучшения. Причем, даже не все изменения в итоге попадают в основную ветку. Считаю, что таким образом повышается уровень владения кодом, что очень важно.
Здравствуйте, magnum2005, Вы писали:
M>Вот взяли вас на работу (php, legacy). Как вы разбираетесь в чужом коде? Есть какая-то методика?
Так же, как и в своём, который не трогал существенное время. Нахожу точки входа, и оттуда прослеживаю выполнение. Или, если примерно известно место, где глючит (например есть стек трейс), то от этого места "раскручиваю" ход исполнения в обратную сторону до точки входа.
M>>Сам очень мучился, ничего не мог понять.
G>Ага, тоже всегда ненавидел ковырять чужой код, вплоть до того, что предпочитал с нуля написать, чем разбираться.