

️ Alerta: as costelas para iOS foram transferidas para um repositório separado
RIBS é a estrutura de arquitetura de plataforma cruzada por trás de muitos aplicativos móveis no Uber. O nome Ribs é curto para roteador, interator e construtor, que são componentes principais dessa arquitetura. Essa estrutura foi projetada para aplicativos móveis com um grande número de engenheiros e estados aninhados.
A arquitetura das costelas fornece:
- Arquitetura compartilhada em todo o iOS e Android. Crie aplicativos de plataforma cruzada com arquitetura semelhante, permitindo que as equipes iOS e Android sejam o código de lógica de negócios de revisão cruzada.
- Testabilidade e isolamento. As classes devem ser fáceis de fazer o teste e a razão sobre isolamento. Classes de costelas individuais têm responsabilidades distintas, como: roteamento, negócios, visualização de lógica, criação. Além disso, a maior parte da lógica das costela é dissociada da lógica de costela infantil. Isso facilita o teste das classes de costela e a razão de independentemente.
- Ferramentas para produtividade do desenvolvedor. As costelas vêm com ferramentas de IDE em torno da geração de código, detecção de vazamentos de memória, análise estática e integrações de tempo de execução - todos que melhoram a produtividade do desenvolvedor para equipes grandes ou pequenas.
- Uma arquitetura que escala. Essa arquitetura provou ser escalada para centenas de engenheiros que trabalham na mesma base de código e aplicativos com centenas de costelas.
Documentação
Para começar com as costelas, consulte a documentação das costelas. Isso descreve conceitos -chave nas costelas, pelo que são, sua estrutura e casos de uso comum.
Para obter mais mãos com costelas, escrevemos uma série de tutoriais que atravessam você pelos principais aspectos da arquitetura com exemplos práticos.
Para ler sobre a história de fundo sobre por que criamos as costelas, consulte esta postagem do blog que escrevemos ao lançar costelas em produção pela primeira vez e veja este pequeno vídeo em que discutimos como a arquitetura das costelas funciona.
Qual é a diferença entre costelas e mv*/viper?
MVC, MVP, MVI, MVVM e Viper são padrões de arquitetura. Costelas é uma estrutura. O que diferencia as costelas das estruturas baseadas em MV*/Viper é:
- A lógica de negócios aciona o aplicativo, não a árvore de visualização . Ao contrário do MV*/Viper, uma costela não precisa ter uma visão. Isso significa que a hierarquia de aplicativos é impulsionada pela lógica de negócios, não pela árvore de visualização.
- Lógica de negócios independente e visualize árvores . As costelas desacoplam como os escopos lógicos de negócios são estruturados a partir de hierarquias de exibição. Isso permite que o aplicativo tenha uma árvore de lógica de negócios profunda, isolando os nós da lógica de negócios, mantendo uma hierarquia de visualização superficial, facilitando facilmente os layouts, animações e transições.
Existem outras coisas novas sobre as costelas. No entanto, eles também podem ser implementados com outras estruturas MV*/Viper. Estes são:
- Abordagem de plataforma cruzada , permitindo que a arquitetura iOS e Android permanecessem em sincronia.
- Ferramentas para facilitar a adoção em aplicativos ou equipes maiores. Tooling We Are Open Sourcing inclui plugins IDE para geração de código e análise de código estático.
- Opiniões fortes sobre como o estado deve ser comunicado , usando DI e RX. Cada costela define suas dependências e quais dependências precisam de seus pais. Os componentes dos pais que atendem às dependências dos pais de uma criança são fornecidos aos construtores de crianças como uma dependência do construtor para permitir o escopo hierárquico. Isso significa que as informações são comunicadas através dessas dependências para cima e para baixo na árvore.
Uso
- Clone este repositório
- Integrar usando seu mecanismo de instalação preferido
Para o uso das ferramentas construídas em torno das costelas, consulte a seção de ferramentas em nossa documentação.
Instalação para Android
Para integrar a configuração mínima recomendada para costelas, adicione o seguinte ao seu build.gradle :
dependencies {
annotationProcessor ' com.uber.rib:rib-compiler-test:0.16.3 '
implementation ' com.uber.rib:rib-android:0.16.3 '
testImplementation ' com.uber.rib:rib-test:0.16.3 '
} Existem vários pacotes de extensão disponíveis, incluindo extensões de Kotlin, Jetpack compõe suporte, suporte de coroutinas
Projetos relacionados
Se você gosta de costelas, confira outros projetos de código aberto relacionados de nossa equipe:
- Costelas: a versão iOS de costelas
- Agulha: uma estrutura de injeção de dependência rápida segura do tempo de compilação.
- Motivo: Um resumo em cima da adaga que oferece APIs mais simples para escopos aninhados.
- Swift Concurrency: um conjunto de classes de concorrência utilizadas pelo Uber, inspiradas nas classes de pacotes Java.util.util.Concurrent.
- Classe abstrata rápida: uma biblioteca leve, juntamente com um executável que permite o desenvolvimento de classes abstratas de compilação em tempo de compilação para projetos Swift.
- Swift Common: Bibliotecas comuns usadas por este conjunto de projetos de código aberto SWIFT.
Licença
Copyright (C) 2017 Uber Technologies
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.