Pull to refresh

Comments 7

Добрый день. Спасибо за статью!
Есть небольшие замечания по коду, напрямую не относящиеся к содержанию статьи.
В методе mapToNewsViewData(news: List<News>) на каждой итерации создается объект Regex и DateFormat, хотя по сути они для всех одинаковы. В дополнение к этому заполнение итогового списка выглядело бы лучше (читабильнее) при использовании stream подхода. Например, так:


class NewsMapper {
    companion object {
        private val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm", Locale("ru"))
        private val regex = "\\.".toRegex()
    }

    fun mapToNewsViewData(news: List<News>): List<NewsViewData> {
        return news.asSequence()
            .map {
                    val textSplits = it.text.split(regex)              
                    NewsViewData(
                        id = it.date.toString(),
                        title = textSplits[0],
                        description = textSplits[1].trim(),
                        date = dateFormat.format(it.date)
                    )
            }
            .toList()
    }
} 
Спасибо за комментарий! Согласен, так действительно лучше и правильнее. Подчистить можно много чего еще, но для примера не сильно критично на мой взгляд.
В одном тесте делать несколько assert не рекомендуется
Да, есть такая рекомендация и так тоже иногда делаем. Скорее, это дело вкуса и конкретного случая

Не совсем так. В одном тесте нельзя делать несколько "act" (из парадигмы arrange-act-assert). А вот "arrange" и "assert" вполне может быть несколько.

Можно еще тест mapToNewsViewData сделать параметризованным, чтобы не на hardcoded значениях проверять, а на разных, в том числе замысловатых.
А там и до property based tests недалеко.

Хорошая идея. Ещё можно попробовать для входных значений использовать random, хотя некоторые источники утверждают, что так лучше не делать. От случая зависит опять же

Sign up to leave a comment.

Articles