Ответ
Да, приходилось. Часто подхватывал задачи коллег при их отсутствии или высокой загрузке. Важно быстро разбираться в чужом коде, понимать логику и контекст.
Пример:
// Изначальный код коллеги
fun calculateDiscount(price: Double, isPremium: Boolean): Double {
return if (isPremium) price * 0.8 else price
}
// Доработал, добавив проверку на отрицательную цену
fun calculateDiscount(price: Double, isPremium: Boolean): Double {
require(price >= 0) { "Price can't be negative" }
return if (isPremium) price * 0.8 else price
}
Всегда проверяю историю коммитов, тесты и документацию перед внесением изменений.
Ответ 18+ 🔞
А, ну это же классика, ёпта! Каждый раз как в сказке про репку — тянешь чужую задачу, а там хуй с горы, и непонятно, с какого конца за неё браться.
Слушай, вот реально бывает: сидит человек, пишет код, потом взял и свалил в отпуск, а тебе его legacy подкинули. И сидишь ты, смотришь на эту кашу, и думаешь: «Чёрта в душу, в сердцу мать, что тут вообще происходит?» Подозрение ебать чувствую, что сейчас всё накроется медным тазом.
Но ничего, жить будем. Первым делом — не лезу сходу менять. Начинаю с самого простого: читаю коммиты. Смотрю, что этот гений вообще делал последние две недели. Потом иду в тесты, если они, конечно, есть, а не как обычно — их нихуя. Если тестов нет, волнение ебать просто зашкаливает, потому что тронешь одно — сломается всё.
Допустим, нахожу я какую-нибудь функцию, как в твоём примере. Смотрю и понимаю: ну ядрёна вошь, чувак, ну как так можно? Цену на скидку передают, а что, если её в минус засунут? Программа твоя тогда просто пизда рулю, и всё.
Вот и приходится допиливать. Беру эту функцию, и первым делом впендюриваю туда нормальные проверки. Чтобы было понятно, на каком этапе всё пошло по пизде, если что.
// Было у коллеги — наивно и страшно
fun calculateDiscount(price: Double, isPremium: Boolean): Double {
return if (isPremium) price * 0.8 else price
}
// Стало после моих манипуляций — надёжно и с проверкой
fun calculateDiscount(price: Double, isPremium: Boolean): Double {
require(price >= 0) { "Price can't be negative" }
return if (isPremium) price * 0.8 else price
}
Главное — не наворотить лишнего. А то бывает, начнёшь рефакторить чужое, входишь в раж, и тут: «Ой, а давайте я ещё тут архитектуру поменяю, тут паттерн новый впилю!» А потом приезжает автор, смотрит и говорит: «Какого хуя?» И ты такой: «Сам от себя охуел».
Поэтому правило простое: разобрался в логике, поправил очевидные косяки, покрыл тестами свои изменения — и в продакшн. Не надо тут изобретать велосипед с реактивным двигателем. Сделал так, чтобы не было стыдно, и пошёл дальше. Всё гениальное — просто, а всё сложное — обычно просто пиздопроебибна.