Pull to refresh

Comments 2

Для начала неплохо было бы определиться с целью проекта.
А) Мы делаем не нужное никому тренировочное приложение на Kotlin, чтобы попробовать что-нибудь сделать на Kotlin.
Б) Мы делаем внутренний движок для текстовых игр с картинками на Kotlin, чтобы заполонить маркет нашими крутыми играми и немножко заработать.
В) Мы решили сделать текстовую игру с картинками.
Перейдём сразу к варианту В.
Скачиваем и устанавливаем движок Instead.
Втыкаем в документацию.
Пилим тему оформления.
Делаем игру.
Пакуем папку с игрой в zip.
Заливаем в репозиторий.
Зачем делать на Kotlin так?:
class Game {
    private lateinit var store: Store
    private lateinit var question: Question

    fun init(context: Context) {
        this.store = StoreFactory.getStore(context)

        question = store.getQuestionById(1)
    }


Когда идиоматичнее так:
class Game(context: Context) {
    private val store = StoreFactory.getStore(context)
    private var question = store.getQuestionById(1)


А это вы просто пишете с помощью Kotlin на другом каком-то языке, кажется, паскале:

fun getAnswers(): List<Answer> {
        val list: MutableList<Answer> = ArrayList(this.answers)
        val shouldAdd: Int = 4 - list.size

        for (i in 1..shouldAdd) {
            list.add(Answer("", -1))
        }

        return list
    }


Я бы предложил так (хотя сама идея добавить пустышками до нужного кол-ва так себе, явно неразумное ограничение, с которым нужно бороться в другом месте):

fun getAnswers(): List<Answer> = listOf(answers, List(4 - answers.size) { Answer("", -1) }).flatten()


Rx и Mvp уже пару лет вытесняются Kotlin coroutines и Mvvm/Mvi. Активити фрагментами или вообще Compose. Для json есть библиотеки Kotlin serialization, для андроида — gson, moshi и т.д.
Sign up to leave a comment.

Articles