TL;DR: Use real abstractions and real objects instead of string accidental
manipulation

Проблемы

  • Сложность
  • Читабельность
  • Ремонтопригодность
  • Отсутствие абстракций

Решения

  • Работайте с объектами вместо строк.
  • Замените строки структурами данных, связанными с объектными отношениями.
  • Найдите проблемы биекции между реальными объектами и строками.

Примеры

  • Сериализаторы
  • Парсеры

Образец кода

Неправильный

val schoolDescription = "College of Springfield"

// location = "Springfield"
val location = """[^ ]*\$""".toRegex().find(schoolDescription)?.value

// school = "College"
val school = """^[\w]+""".toRegex().find(schoolDescription)?.value

Верно

class School(
    private val name: String,
    private val location: Location
) {
    fun description() = "$name of ${location.name}"
}

class Location(
    val name: String
)

Заключение

Не злоупотребляйте струнами. Отдавайте предпочтение реальным объектам. Найдите отсутствующий протокол, чтобы отличить их от строк.

Кредиты

Первоначально опубликовано на https://yonatankarp.com.