Задать вопрос
@Levhav
Возьмусь за разработку проектов любой сложности.

Как править чужой код так чтоб его не сломать?

Какие есть практики по работе с чужим кодом без документации?
Получил задачу на фрилансе по добавлении функций в wordpress сайт написанный кем то до меня.

Суть такая: Кода много. Документации нет. Тестов нет. Комментариев в коде нет. Использован самописный шаблон и плагин. Оплата почасовая.

Я работать старался очень аккуратно. И не вносил правок в код которые меняли бы поведение функций. А если что и дописывал то так чтоб поддерживать обратную совместимость, так как не проанализировав работы всего кода я не могу сказать где могло бы что то сломаться и откуда ещё вызываются функции.
А просить оплату за несколько дней работы просто чтоб досконально изучить алгоритмы той кучи кода которая была написана до этого вроде как тоже в несколько раз бюджет увеличит.

Но когда я исправил комментарий в коде шаблона с такого текста
<!--products_list-->
<?php
                PX()->display_widget('JD\Widget\Producer\Products\Widget', array(
                    'profile' => $profile,
                    'posts_per_page' => 3
                ));
?>
<!--products_list-->

На такой (в последней строке добавил слово "end" в комментарии)
<!--products_list-->
<?php
                PX()->display_widget('JD\Widget\Producer\Products\Widget', array(
                    'profile' => $profile,
                    'posts_per_page' => 3
                ));
?>
<!--end products_list-->


сломалась самописная система кеширования.
Как можно эффективно отслеживать побочные эффекты от правок?
  • Вопрос задан
  • 1526 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 3
@kttotto
пофиг на чем писать
Во первых нужно закладывать время на разбор легаси кода, об этом сразу надо говорить с заказчиком. Зная задачу, всегда понимаешь, ЧТО надо написать, но в случае с легаси надо еще и понять КУДА это написать. Без этого никак и поэтому это время надо учитывать.

Второе. Когда-то меня учили, что код нужно менять только дописывая его, в крайнем случае удаляя, но ни в коем случае не переписывая. Поэтому, если надо изменить поведение - наследуешься, переопределяешь метод и используешь новый класс. Мне сложно судить о php, как этот проект реализован, но ООП для того и придумали, что его легче поддерживать и он легче модифицируется.

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

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

А вообще чтение легаси, это дело опыта. Я помню первые свои чужие проекты, я думал, что попал в ад. Сейчас копаться в чужом коде, это мое любимое дело) Я могу часами сидеть разбирать чужой код, что начальству приходится меня попускать: "я понимаю, я тоже это люблю, но надо дело делать")) Люблю просто на гитхабе полазить по чужим проектам, посмотреть как люди думают.
Ответ написан
Комментировать
@just_hank_moody
1 - Всегда делать бэкап чужого кода до внесения даже любых изменений.
2 - Скопировать чужой код и развернуть на своем сервере. Дальше править без страха, что сломается что-то и клиент это увидит.
Ответ написан
Комментировать
lunaticman
@lunaticman
Дерзкий айтишник
Желательно чтобы ошибки можно было делать и быстро исправлять:
- Иметь возможность откатывать релиз с продакшена на преведущую версию - замечальная возможность на крайний случай, если все вообще плохо пошло.
- Использовать инструмент для версионирования кода - git например.
- Писать тесты для кода который вы редактируете, поможет не только обезопасить себя от глуппых ошибок, но и лучше изучить как код работает.

Никаких специфик по wordpress к сожалению дать не могу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы