IT Mídia
Notícias em destaque

Módulos como namespaces

30 de setembro de 2011 19:54

Módulos em Ruby são grupos de métodos, constantes e variáveis de classes. Os módulos não podem ser instanciados e não existe herança de módulos.

Há duas maneiras de usar os módulos:

  • Como namespaces
  • Como mixin, onde os métodos de instância de um módulo podem ser “misturados” em outras classes

Nest post falarei somente sobre o uso de módulos como namespaces.

Bons motivos para usar namespaces são:

  • Previnir o conflito de nomes, seja de classes e/ou métodos
  • Organizar seu código de maneira lógica

Então vamos a um exemplo.

Imagine uma loja virtual que utiliza duas empresas de envio de mercadorias: Correios e FedEx. Para essas duas empresas é feito o cálculo de frete, utilizando as informações dos produtos nos pedidos dos clientes, no carrinho de compras da loja.

Então teríamos duas classes de cálculo de frete, uma para os Correios e outra para FedEx. Não podemos ter duas classes com o mesmo nome, por exemplo uma classe chamada Frete, então criamos dessa forma:

Com namespaces, você consegue uma maneira mais organizada de nomear essas classes:

No código acima, criamos o módulo Frete e dentro do módulo as classes Correios e Fedex.

Para instanciar uma classe com namespace, utilize o sintaxe NomeDoModulo::NomeDaClasse.new, como no código abaixo:

Os módulos podem também ter constantes. Vamos criar um constante de peso mínimo no nosso módulo Frete:

Uma constante em um módulo é acessível fora do módulo utilizando a sintaxe NomeDoModulo::NOME_DA_CONSTANTE. Dentro do módulo, e consequentemente das classes que estão no módulo, pode-se usar a constante sem o prefixo do nome do módulo. Vejo exemplo da constante PESO_MINIMO:

Não necessariamente você precisa criar todas as classes aninhadas de um módulo em um arquivo só. Para o nosso exemplo, poderíamos ter um arquivo para o módulo e também um arquivo para cada classe.


Outra maneira de declarar namespaces é colocar o nome do módulo, seguido de :: (4 pontos), antes do nome da classe.

No próximo post falarei sobre o uso de módulos como mixin.

Sobre Fernando Hamasaki de Amorim

Desenvolvedor sênior na Locaweb, empresa na qual está desde 2007, Fernando Hamasaki de Amorim trabalha desde a criação até a arquitetura, modelagem, análise e integração de sistemas e aplicativos na companhia. Graduado em Tecnologia em Informática pela UniSant'Anna, o profissional possui pós-graduação em Tecnologias Web com Ênfase em Java pela Fiap. Já atuou em diversas outras companhias, tais como a TV Online, empresa brasileira pioneira em transmissões ao vivo e SAC Sistemas, que desenvolve ERP. Neste espaço, abordará temas envolvendo o desenvolvimento por meio da linguagem Ruby.

Entre em contato com Fernando Hamasaki de Amorim

Parceiros

Portais: IT Mídia | IT Web | Saúde Web

Publicações: InformationWeek Brasil | CRN Brasil | FH

Fóruns: IT Forum | IT Forum + | IT Business Forum | Saúde Business Forum