RxSwift e Coroutines na Kotlin - desenvolvimento móvel opcional da AGIMA e GeekBrains



Conhecimento é bom, ótimo. Mas também precisamos de prática para poder usar os dados obtidos, transferindo-os do status de “armazenamento passivo” para o status de “uso ativo”. Não importa o quão bom seja o treinamento teórico, é necessário mais trabalho "no campo". O exposto acima se aplica a praticamente qualquer campo de estudo, incluindo, é claro, desenvolvimento de software.

Este ano, o GeekBrains, como parte do departamento de desenvolvimento móvel da universidade online GeekUniversity, começou a trabalhar com a agência interativa AGIMA, cuja equipe é desenvolvedores profissionais (realizando projetos complexos de alta carga, portais corporativos e aplicativos móveis). A AGIMA e a GeekBrains criaram uma eletiva para profunda imersão nas questões práticas do desenvolvimento de aplicativos móveis.

No outro dia, conversamos com Igor Vedeneev, especialista em iOS, e Alexander Tizik, especialista em Android. Graças a eles, a eletiva de desenvolvimento móvel foi enriquecida por um curso prático prático sobre a estrutura e as rotinas RxSwift em Kotlin . Neste artigo, os desenvolvedores falam sobre a importância de cada direção para os programadores.

Programação reativa no iOS usando o RxSwift como exemplo



Professor opcional Igor Vedeneev: “Com o RxSwift, sua aplicação voará”

Quais informações os alunos recebem nas eletivas?

Não falamos apenas sobre os recursos da estrutura, mas também mostramos como usá-lo no pacote MVVM + RxSwift clássico. Vários exemplos práticos também são considerados. Para consolidar os dados recebidos, escrevemos um aplicativo o mais próximo possível das condições de trabalho em campo. Será um aplicativo de pesquisa de músicas usando a API de Pesquisa do iTunes . Lá aplicaremos todas as melhores práticas, além de considerarmos uma opção mais simples para usar o RxSwift no paradigma MVC.

RxSwift - por que essa estrutura para programador iOS, como facilita a vida do desenvolvedor?

As linhas de fluxo do RxSwift funcionam com fluxos de eventos e relacionamentos entre objetos. O exemplo mais simples e mais óbvio é o binders: por exemplo, você pode atualizar a interface simplesmente configurando novos valores em uma variável no viewModel. Assim, a interface se torna orientada a dados. Além disso, o RxSwift permite descrever o sistema em um estilo declarativo, o que permite otimizar o código e melhorar a legibilidade. Tudo isso ajuda a desenvolver aplicativos com mais eficiência.

Para o desenvolvedor, o conhecimento da estrutura também é uma boa vantagem no currículo, pois é apreciado no mercado o entendimento da programação reativa e, principalmente, a experiência com o RxSwift.

Por que escolher essa estrutura, e não outras?

RxSwift tem a maior comunidade. Ou seja, há mais chances de que o problema que o desenvolvedor esteja enfrentando já tenha sido resolvido por alguém. Também um grande número de pastas prontas para uso. Além disso, o RxSwift faz parte do ReactiveX. Isso significa que existe um análogo para o Android, por exemplo (RxJava, RxKotlin), e os colegas podem falar o mesmo idioma, apesar de alguns trabalharem com o iOS, outros com o Android.

A estrutura é constantemente atualizada, pequenos bugs são corrigidos, o suporte para chips de novas versões do Swift é adicionado, novos fichários são adicionados. Como o RxSwift é de código aberto, você pode acompanhar todas as alterações. Além disso, é possível adicioná-los você mesmo.

Onde usar o RxSwift?

  1. Ligações. Como regra, aqui estamos falando sobre a interface do usuário, a capacidade de alterar a interface do usuário, como se reagisse às alterações de dados, e não explicitamente dizendo à interface que é hora de atualizar.
  2. Vincular componentes e operações. Imediatamente um exemplo. Precisamos obter uma lista de dados da rede. De fato, essa não é uma operação tão simples. Para fazer isso, envie uma solicitação, mapeie a resposta para uma matriz de objetos, salve-a no banco de dados e envie-a para a interface do usuário. Os responsáveis ​​por executar essas operações, em regra, são componentes diferentes (amamos e seguimos os princípios do SOLID ?). Tendo em mãos uma ferramenta como o RxSwift, torna-se possível descrever O QUE o sistema fará e COMO o fará - estará em outros lugares. É por isso que a melhor organização do código é alcançada e a legibilidade é aumentada. Relativamente falando, o código pode ser dividido em um sumário e no próprio livro.

Corotinas em Kotlin



Professor opcional Alexander Tizik: “O desenvolvimento moderno requer meios técnicos modernos”

O que será ensinado na faculdade GeekBrains como parte do trimestre da marca?

Teoria, comparações com outras abordagens, exemplos práticos em Kotlin puro e no modelo de aplicativo Android. No que diz respeito à prática, será mostrado aos alunos uma aplicação na qual tudo está vinculado às corotinas. O fato é que a maioria dos aplicativos é computação assíncrona e paralela contínua. Porém, as corotinas da Kotlin permitem que confusas, heterogêneas ou excessivamente complexas e exigentes em termos de código de desempenho sejam reduzidas a um estilo único e fácil de entender, ganhando a execução e o desempenho corretos.

Aprenderemos como escrever código idiomático em corotinas, o que resolve problemas práticos e é compreensível à primeira vista, mesmo sem um profundo conhecimento de como as corotinas funcionam (o que não pode ser dito sobre bibliotecas como o RxJava). Também entenderemos como usar conceitos mais complexos, como o modelo de ator, para resolver tarefas mais complexas, como o data warehouse no conceito MVI.

A propósito, mais boas notícias. Enquanto o opcional estava sendo gravado, uma atualização foi feita na biblioteca Kotlin Coroutines, na qual a classe Flow apareceu - um análogo dos tipos Flowable e Observable do RxJava. A atualização essencialmente torna o recurso de rotinas completas do ponto de vista do desenvolvedor de aplicativos. É verdade que ainda há muito espaço para desenvolvimento: apesar do suporte à corotina no kotlin / nativo, já é possível escrever aplicativos multiplataforma no Kotlin e não sofrer com a ausência de RxJava ou análogos no Kotlin puro, o suporte à corotina no kotlin / nativo ainda não está completo. Por exemplo, não há conceito de atores. Em geral, a equipe Kotlin planeja dar suporte a atores mais complexos em todas as plataformas.

Kotlin Coroutines - como eles ajudam o desenvolvedor do Kotlin?

As corotinas oferecem uma excelente oportunidade para escrever código legível, suportado e seguro, assíncrono e de simultaneidade. Você também pode criar adaptadores para outras estruturas e abordagens assíncronas que já podem ser usadas na base de código.

Como as corotinas diferem dos fluxos?

A equipe da Kotlin chama os fluxos leves de corotinas. Além disso, a corotina pode retornar algum valor, porque, em essência, a corotina é um cálculo suspenso. Não depende diretamente dos encadeamentos do sistema, os encadeamentos executam apenas corotinas.

Quais problemas práticos podem ser resolvidos usando Corutin, que não podem ou são difíceis de resolver com a ajuda de Kotlin "limpo"?

Qualquer tarefa assíncrona, paralela e "competitiva" é bem resolvida com a ajuda da corotina - seja processando cliques do usuário, acessando a rede ou assinando atualizações do banco de dados.

No Kotlin puro, essas tarefas são resolvidas da mesma maneira que no Java - com a ajuda de milhares de estruturas, cada uma com seus prós e contras, mas nenhuma delas com suporte no nível da linguagem.



Como conclusão, vale dizer que ambas as disciplinas eletivas (e também os principais cursos) são atualizadas de acordo com mudanças nas condições externas. Se atualizações importantes aparecerem em idiomas ou estruturas, os professores levarão isso em conta e modificarão o programa. Tudo isso permite que você se mantenha informado sobre o processo de desenvolvimento, se assim posso dizer.

Source: https://habr.com/ru/post/pt453962/


All Articles