The Codest
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Indústrias
    • Fintech e Banca
    • E-commerce
    • Adtech
    • Tecnologia da saúde
    • Fabrico
    • Logística
    • Automóvel
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
Seta para trás VOLTAR
2022-07-12
Desenvolvimento de software

Hash: Utilizar ou não utilizar

The Codest

Krzysztof Buszewicz

Sénior Software Engineer

Leia um artigo do nosso especialista em Ruby e saiba porque é que não precisa de usar sempre o seu hash.

Introdução

Quando queremos agregar algumas coisas, é muito frequente utilizarmos 1TP69Ensinar_com_objecto ou alargar o período normal de laço utilizando #com_objecto. Mas na maioria dos casos Rubi criadores estão a utilizar um hash simples como agregador e talvez não haja problema, mas neste artigo gostaria de mostrar que nem sempre tem de ser um hash.

Caso

Assumimos que todos os ficheiros são colocados num diretório (pessoas).

Digamos que temos o seguinte pessoas/pessoas.csv file:

 Nome, Apelido, Idade
 John,Doe,24
 Jane,Dee,45
 Josh,Bee,55
 Andrea,Boya,34
 Andrew,Moore,54

Queremos encontrar o total de linhas e a idade média - poderíamos escrever o seguinte script:

pessoas/parser.rb

requerer 'csv'

aggregated = CSV.foreach('people.csv', headers: true)
.withobject({ total: 0, totalage: 0 }) do |row, agg|
agg[:total] += 1
agg[:totalage] += row['Age'].toi
fim

total = aggregated[:total]
averageage = aggregated[:totalage].to_f / total

coloca "Total: #{total}"
puts "Idade média: #{idade média}"

E sim, faz a coisa, mas ler uma código é um prazer duvidoso. Parece um nível demasiado baixo. Podemos melhorá-lo fornecendo um agregador dedicado para o laço.

people/age_aggregator.rb

classe AgeAggregator
attrreader :total, :totalage

def initialize
@total = 0
@total_idade = 0
fim

def incrementar!
@total += 1
fim

def incrementage!(idade)
@totalage += idade
fim

def averageage
totalage.to_f / total
fim
fim

E então o nosso loop ficaria como abaixo:

pessoas/parser.rb

require 'csv'
requirerelative './ageaggregator.rb'

aggregated = CSV.foreach('people.csv', headers: true)
.withobject(AgeAggregator.new) do |row, agg|
agg.increment!
agg.incrementage!(row['Age'].to_i)
fim

puts "Total: #{agregado.total}"
puts "Idade média: #{agregado.idade_média}"

Penso que é muito mais claro.

Resumo

Escrevemos mais código, mas os nossos detalhes de nível inferior são extraídos para a classe separada. Agora o guião principal lê-se muito melhor.

É claro que se pode argumentar que o exemplo é demasiado simples para se fazer tanto esforço na refacção, mas vá lá - é apenas um exemplo ;). Se tiver de agregar mais dados, estes objectos agregadores são realmente a melhor solução.

faixa de cooperação

Ler mais:

Prós e contras do desenvolvimento de software Ruby

Carris e outros meios de transporte

Desenvolvimento Rails com TMUX, Vim, Fzf + Ripgrep

Artigos relacionados

Fintech

5 exemplos da melhor utilização do Ruby

Já alguma vez pensou no que podemos fazer com Ruby? Bem, o céu é provavelmente o limite, mas temos todo o gosto em falar sobre alguns casos mais ou menos conhecidos...

The Codest
Pawel Muszynski Software Engineer
Desenvolvimento de software

Contratação de programadores internos vs. externos

Contratar internamente ou externamente? É o derradeiro dilema! Descubra as vantagens da outsourcing ou da criação de uma equipa interna no artigo seguinte.

The Codest
Grzegorz Rozmus Líder de unidade Java
Desenvolvimento de software

A história de sucesso do The Codest: De desenvolvedor de Ruby a líder de masterclass

Conheça Tomasz Szkaradek - Diretor de Operações de Pessoal na The Codest. Descubra o percurso profissional de Tomek, de Gestor de Rubi a membro do grupo principal. Como é que ele conseguiu...

The Codest
Tomasz Szkaradek Arquiteto de desenvolvimento
Desenvolvimento de software

Saiba mais sobre o Ruby on Rails com Pub/Sub

O Pub/Sub pode trazer muitos benefícios para o projeto - pode tornar o código limpo, dissociar serviços e torná-los facilmente escaláveis. Saiba mais sobre o Pub/Sub no seguinte artigo...

The Codest
Michal Pawlak Programador Ruby sénior

Subscreva a nossa base de conhecimentos e mantenha-se atualizado sobre os conhecimentos do sector das TI.

    Sobre nós

    The Codest - Empresa internacional de desenvolvimento de software com centros tecnológicos na Polónia.

    Reino Unido - Sede

    • Office 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polónia - Pólos tecnológicos locais

    • Parque de escritórios Fabryczna, Aleja
      Pokoju 18, 31-564 Cracóvia
    • Embaixada do Cérebro, Konstruktorska
      11, 02-673 Varsóvia, Polónia

      The Codest

    • Início
    • Sobre nós
    • Serviços
    • Case Studies
    • Saber como
    • Carreiras
    • Dicionário

      Serviços

    • Aconselhamento
    • Desenvolvimento de software
    • Desenvolvimento backend
    • Desenvolvimento de front-end
    • Staff Augmentation
    • Programadores de back-end
    • Engenheiros de nuvem
    • Engenheiros de dados
    • Outros
    • Engenheiros de GQ

      Recursos

    • Factos e mitos sobre a cooperação com um parceiro externo de desenvolvimento de software
    • Dos EUA para a Europa: Porque é que as empresas americanas decidem mudar-se para a Europa?
    • Comparação dos centros de desenvolvimento da Tech Offshore: Tech Offshore Europa (Polónia), ASEAN (Filipinas), Eurásia (Turquia)
    • Quais são os principais desafios dos CTOs e dos CIOs?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Direitos de autor © 2026 por The Codest. Todos os direitos reservados.

    pt_PTPortuguese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek cs_CZCzech pt_PTPortuguese