Conforme você escreve programas grandes, organizar seu código será importante porque manter o controle de todo o programa em sua cabeça se tornará impossível. Ao agrupar a funcionalidade relacionada e separar o código com recursos distintos, você esclarecerá onde encontrar o código que implementa um recurso específico e onde ir para alterar o funcionamento de um recurso.
Os programas que escrevemos até agora estão em um módulo em um arquivo. Conforme um projeto cresce, você pode organizar o código dividindo-o em vários módulos e, em seguida, em vários arquivos. Um pacote pode conter vários crates binários e, opcionalmente, um crate de biblioteca. Conforme um pacote cresce, você pode extrair partes em crates separados que se tornam dependências externas. Este capítulo cobre todas essas técnicas. Para projetos muito grandes de um conjunto de pacotes inter-relacionados que evoluem juntos, o Cargo fornece espaços de trabalho, que abordaremos na seção "Espaços de trabalho de carga" no Capítulo 14.
Além da funcionalidade de agrupamento, o encapsulamento de detalhes de implementação permite reutilizar o código em um nível superior: depois de implementar uma operação, outro código pode chamar esse código por meio da interface pública do código sem saber como a implementação funciona. A maneira como você escreve o código define quais partes são públicas para outro código usar e quais partes são detalhes de implementação privados que você se reserva o direito de alterar. Essa é outra maneira de limitar a quantidade de detalhes que você precisa manter na cabeça.
Um conceito relacionado é o escopo: o contexto aninhado no qual o código é escrito tem um conjunto de nomes que são definidos como "no escopo". Ao ler, escrever e compilar código, os programadores e compiladores precisam saber se um nome específico em um determinado local se refere a uma variável, função, estrutura, enum, módulo, constante ou outro item e o que esse item significa. Você pode criar escopos e alterar quais nomes estão dentro ou fora do escopo. Você não pode ter dois itens com o mesmo nome no mesmo escopo; ferramentas estão disponíveis para resolver conflitos de nomes.
O Rust tem vários recursos que permitem gerenciar a organização do seu código, incluindo quais detalhes são expostos, quais detalhes são privados e quais nomes estão em cada escopo em seus programas. Esses recursos, às vezes chamados coletivamente de sistema de módulo, incluem:
- Pacotes: um recurso de carga que permite construir, testar e compartilhar crates.
- Crates: uma árvore de módulos que produz uma biblioteca ou executável.
- Módulos e use: permitem que você controle a organização, o escopo e a privacidade dos caminhos.
- Caminhos: uma maneira de nomear um item, como uma estrutura, função ou módulo.
Neste capítulo, vamos cobrir todos esses recursos, discutir como eles interagem e explicar como usá-los para gerenciar o escopo. No final, você deve ter um conhecimento sólido do sistema de módulos e ser capaz de trabalhar com escopos como um profissional!
Traduzido por Acervo Lima. O original pode ser acessado aqui.
0 comentários:
Postar um comentário