Três meses após o início, os Kodebits encontraram seu ritmo: pequenos desafios de codificação autossuficientes que você pode trabalhar entre reuniões, postados em nossos canais sociais conforme surgem e reunidos no arquivo Kodebits posteriormente.
Junho trouxe 17 deles em iOS/Swift, Android/Kotlin e Flutter/Dart, e neste mês eles começaram a parecer menos como dicas isoladas e mais como uma viagem conectada para cada linguagem. Swift mergulhou no semântica de valor e correspondência de padrões, Kotlin trabalhou nas características por trás dos seus DSLs, e Dart se baseou em fluxo de controle moderno e coleções. Tudo está reunido abaixo, dividido por plataforma e ordenado do básico ao avançado, com uma nota sobre o que cada um é bom para — e se você está apenas agora se atualizando, os primeiros e segundos meses estão resumidos da mesma forma.
Cada bit é rotulado por dificuldade: Iniciante para um aquecimento fácil, Intermediário para algo para mastigar e Avançado quando estamos entrando na parte mais profunda.
Cada página Kodebit oferece o problema para você pensar primeiro, então uma solução e explicação — além de links para o catálogo mais amplo do Kodeco quando um tópico te chama a atenção e você quer ir mais fundo.
iOS & Swift
Oito Kodebits em junho, com uma linha clara passando por eles: semântica de valor e correspondência de padrões. Structs, tuplas e switch aparecem todos juntos, o que cobre muito do que faz Swift parecer diferente de um idioma pesado em referências como Java ou C#. Também há um par sobre o sistema de tipos — protocolos e casting de tipo — para quando você está pronto para ir além dos fundamentos.
Iniciante
- Dia 34: Interpolação de String — Insira valores diretamente dentro de uma string literal com
(...). Um dos primeiros conceitos que você aprende em Swift e um dos últimos que para de apreciar, já que lê muito mais limpo do que a concatenação. - Dia 37: Destruturação de Tupla — Desempacote os elementos de uma tupla em constantes nomeadas em uma única linha. A maneira elegante de lidar com uma função que naturalmente retorna mais de um valor sem recorrer a um full struct.
- Dia 39: Cópia de Valor do Struct — Os structs são tipos de valor, então atribuir um a uma nova variável faz uma cópia. Mutar a cópia e o original permanece inalterado. É o lado Swift da mesma moeda que a data class Kotlin de abril
copy(), e a base para raciocinar sobre estado em SwiftUI. - Dia 49: Soma Variádica — Aceite qualquer número de argumentos com
...e trabalhe com eles como um array dentro da função. A mecânica por trás das APIs familiares comoprint.
Intermediário
- Dia 40: Match de Padrão em Tupla — Faça match na forma de uma tupla dentro de um
switch, testando e vinculando elementos em um único movimento. Continua onde o enum associado de maio parou e mostra até onde a correspondência de padrões do Swift realmente chega. - Dia 44: Conformidade com Protocolo — Um olhar exato sobre o que um tipo precisa fornecer para satisfazer um protocolo. Traz de volta as extensões do protocolo de abril: aqui você atende às exigências, lá você fornece valores padrão para elas.
- Dia 45: Inicialização de Propriedade Lazy — Uma propriedade
lazyadia seu trabalho até a primeira vez que é lida, então armazena o resultado. Vale a pena ler logo após a propriedade computada de maio: uma recompõe em cada acesso, esta compõe uma vez e lembra. - Dia 47: Verificação de Casting de Tipo — Use
ispara testar um tipo eas?para downcast de forma segura. Essencial sempre que você está trabalhando com valores cujo tipo concreto não é conhecido até a execução.
Android & Kotlin
Sessão Kodebits em junho, e juntas elas leem como um tour de por que o Kotlin é tão bom para construir APIs expressivas do tipo DSL. Funções infixadas, sobrecarga de operadores, lambdas com receivers e delegação são exatamente as características por trás das bibliotecas como Compose e o Gradle Kotlin DSL. Se você já se perguntou como essas bibliotecas leem da maneira que fazem, este é o mês.
Iniciante
- Dia 33: Desestruturação de Classe de Dados — Separe uma classe de dados em seus valores componentes em uma única atribuição. O companheiro natural da função
copy()de abril — juntos, você tem a maior parte do que torna as classes de dados valiosas.
Intermediário
- Dia 35: Objeto Companheiro — O Kotlin não tem a palavra-chave
static; um objeto companheiro é onde membros de nível de classe e métodos fábrica vivem. A casa idiomática para coisas que você buscaria estáticas em outro lugar. - Dia 38: Função Infix — Marque uma função
infixe chame-a sem pontos ou parênteses, então1 to "one"lê como sintaxe incorporada. Um pequeno recurso que faz muito do trabalho pesado nas APIs mais legíveis do Kotlin. - Dia 42: Sobreposição de Operadores — Dê significado a operadores como
+e[]para seus próprios tipos implementando funções com nomes especiais. Poderoso para tipos do domínio como vetores ou dinheiro, e fácil de exagerar — o pedaço é um bom lugar para sentir a linha.
Avançado
- Dia 36: Lambda com Receiver — Uma lambda onde
thisse refere a um objeto receptor fornecido em vez do escopo envolvente. Esta é a única característica que torna possíveis DSLs Kotlin como Compose ebuildString, então vale a pena o esforço. - Dia 48: Delegação por Palavra-Chave — Use
bypara entregar a implementação de interface ou acesso à propriedade a outro objeto, sem métodos de reencaminhamento obrigatórios. Composição sobre herança, assentada no idioma.
Flutter & Dart
Três Kodebits em junho, um pouco mais avançados do que o habitual. Nós olhamos para as expressões switch do Dart (uma abordagem genuinamente moderna de fluxo de controle), uma cadeia de filtragem e agregação de coleção, e métodos de extensão — a contraparte Dart das funções de extensão Kotlin que cobrimos em maio.
Intermediário
- Dia 43: Where Then Fold — Encadeie
wherepara filtrar uma coleção efoldpara reduzi-la a um único valor. A expressão Dart de um padrão que você já viu em todas as três linguagens: descreva a transformação, não roliar manualmente o loop. - Dia 46: Método de Extensão — Adicione métodos a tipos existentes de fora da classe. Se o bit de função de extensão Kotlin em maio funcionou, esta é a mesma ideia no Dart — útil para ver quais conceitos realmente viajam entre linguagens.
Avançado
- Dia 41: Expressão Switch — O
switchdo Dart pode ser usado como uma expressão que retorna um valor, completa com correspondência de padrões. Um grande passo em relação ao switch estilo C e uma das melhores adições nas versões recentes do Dart.

