Pull to refresh

Comments 6

Поправьте, пожалуйста, код в соответствии с официальным стайл гайдом: https://kotlinlang.org/docs/reference/coding-conventions.html#class-header-formatting


Конструкторы выглядят неестественно для котлин разработчика:


class ContentPresenter(private val repository: ContentRepository,
                       private val view: ContentView) {

Лучше (и рекомендуется):


class ContentPresenter(
    private val repository: ContentRepository,
    private val view: ContentView
) {
UbuRus спасибо за комментарий. Поправил в гите и в статье.

Зачем делать класс и открывать его, если можно сделать интерфейс и несколько реализаций?


interface CoroutineContextProvider {
    val Main: CoroutineContext
    val IO: CoroutineContext
}

class AppCoroutineContextProvider : CoroutineContextProvider {
    override val Main: CoroutineContext by lazy { UI }
    override val IO: CoroutineContext by lazy { CommonPool }
}

class TestContextProvider : CoroutineContextProvider {
    override val Main: CoroutineContext = Unconfined
    override val IO: CoroutineContext = Unconfined
}

Спасибо за комментарий. В данном случае можно использовать и ваш способ, но для этого необходимо создать ещё одну абстракцию в коде в виде интерфейса. Я предпочитаю избегать лишних абстракций по возможности. Плата за это — добавление модификатора open к имени переменных. Нам в любом случае приходится делать это, чтобы можно было использовать библиотеку mockito.

Спасибо за примеры.
Насколько сложно использовать Mockito вместе с котлином?

Совсем не сложно. Полная аналогия с использованием Mockito в java. Только приходится добавлять модификатор open к имени классов, методов, т.к. Mockito не можеть подменить финальные классы, методы.

Sign up to leave a comment.

Articles