Приходилось ли принимать задачи других людей

Ответ

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

Пример:

// Изначальный код коллеги
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
}

Главное — не наворотить лишнего. А то бывает, начнёшь рефакторить чужое, входишь в раж, и тут: «Ой, а давайте я ещё тут архитектуру поменяю, тут паттерн новый впилю!» А потом приезжает автор, смотрит и говорит: «Какого хуя?» И ты такой: «Сам от себя охуел».

Поэтому правило простое: разобрался в логике, поправил очевидные косяки, покрыл тестами свои изменения — и в продакшн. Не надо тут изобретать велосипед с реактивным двигателем. Сделал так, чтобы не было стыдно, и пошёл дальше. Всё гениальное — просто, а всё сложное — обычно просто пиздопроебибна.