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.