Перейти к содержанию

🗒 Задача

Девушка по имени Андреева Татьяна Сергеевна в 22 года вышла замуж за Сидорова и поменяла фамилию. О ней есть запись в одном из государственных приложений. Приложение отслеживает изменения персональных данных граждан.

Выведи в консоль данные на момент когда ей было 20 и на момент когда ей было 22 в формате [ФИО, возраст]. Все части ФИО и возраст изначально хранятся в отдельных переменных.

❌ Ошибки

  • создают новые переменные вместо того, чтобы перезаписывать данные

✏️ Комментарии

Проинициализированные данные мы принимаем за "сущность". Пока что не забегаем вперед, но такое дублирование переменных не очень правильный тон (представь, что таких смен фамилий будет 50 шт условно). Поэтому мы исходные переменные оставляем как есть, но потом перезаписываем в них данные. Поэтому распечатываем сначала то, что есть, а затем меняем данные в переменных и отображаем снова.
По умолчанию надо стараться объявлять неизменяемые переменные. и делать изменяемые только, если этого требует программа
Функции в Котлин называются в инфинитиве, также рекомендую сделать более релевантное название, чтобы при первом взгляде было понятно что делает и за что отвечает эта функция. какое функциональное предназначение функции в этом контексте?
Видимо все вынесено из-за ограничений области видимости. но немного теряется логика, от этого выглядит довольно тяжело для считывания кода
Тут случай когда усложнение ради усложнения) мне кажется пока не стоит прям злоупотреблять функциями, потому что чувствую, что не до конца понимаешь принцип их применения) на эту тему еще будут задания, плавно подводящие к целесообразности использования)
По конкретной строке - ты пытаешься распечатать вызов функции, это не корректный код)
Константы объявляются в другом стиле, отличном от классических переменных. Константы нужны для каких-либо локальных постоянных. у нас они точно не постоянные, потому что в эту переменную с сервера будут приходить разные значения для обработки. во вторых они не локальные, потому что по той же причине тут будет добавляться значение из базы
Ок, но в задаче и далее в других [] подразумевает формат, их печатать не нужно
Пустые строки затесались, надо обращать на них внимание (больше одной)
Тут напрашивается обособление пустыми строками принт, а то выглядит слишком монолитно (влияет на читабельность)

🧾 Решение

fun main() {
    val firstName = "Татьяна"
    var lastName = "Андреева"
    val patronymic = "Сергеевна"
    val age = 20

    println("На момент $age20 лет: [$firstName $lastName $patronymic, $age20 лет]")

    lastName = "Сидорова"
    age = 22

    println("На момент $age22 лет: [$firstName $lastName $patronymic, $age22 лет]")
}
data class Person(
    var firstName: String, 
    var lastName: String, 
    var patronymic: String, 
    var age: Int
)

fun main() {
    val person = Person(
        firstName = "Татьяна", 
        lastName = "Андреева", 
        patronymic = "Сергеевна", 
        age = 20
    )

    println("На момент ${person.age} лет: ${person.firstName} ${person.lastName} ${person.patronymic}, ${person.age} лет")

    person.lastName = "Сидорова"
    person.age = 22

    println("На момент ${person.age} лет: ${person.firstName} ${person.lastName} ${person.patronymic}, ${person.age} лет")
}