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.