window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Hash: Usar o no usar - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2022-07-12
Desarrollo de software

Hash: Usar o no usar

The Codest

Krzysztof Buszewicz

Senior Software Engineer

Lee un artículo de nuestro experto en Ruby y descubre por qué no necesitas siempre este hash.

Introducción

Cuando queremos agregar algunas cosas, muy a menudo utilizamos 1TP63Enseñar_con_objeto o ampliar el bucle utilizando #con_objeto. Pero en la mayoría de los casos Desarrolladores Ruby están utilizando un hash simple como el agregador y tal vez está bien, pero en este artículo, me gustaría mostrarle que no siempre tiene que ser un hash.

Caso

Suponemos que todos los archivos se colocan en un directorio (gente).

Digamos que tenemos lo siguiente personas/personas.csv file:

 Nombre,Apellido,Edad
 John,Doe,24
 Jane,Dee,45
 Josh,Bee,55
 Andrea,Boya,34
 Andrew,Moore,54

Queremos encontrar el total de filas y la edad media - podríamos escribir el siguiente script:

people/parser.rb

require 'csv'

aggregated = CSV.foreach('gente.csv', cabeceras: true)
.withobject({ total: 0, totalage: 0 }) do |row, agg|
agg[:total] += 1
agg[:totalage] += fila['Edad'].toi
end

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

puts "Total: #{total}"
puts "Edad media: #{edad_media}"

Y sí, hace la cosa pero leer tal código es un placer dudoso. Parece un nivel demasiado bajo. Podemos mejorarlo proporcionando un agregador dedicado para el bucle.

people/age_aggregator.rb

clase AgeAggregator
attrreader :total, :totaledad

def inicializar
@total = 0
@edad_total = 0
end

def incremento
@total += 1
end

def incremento!(edad)
@total += edad
end

def averageage
totalage.to_f / total
end
end

Y entonces nuestro bucle quedaría como sigue

people/parser.rb

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

aggregated = CSV.foreach('gente.csv', cabeceras: true)
.withobject(AgeAggregator.new) do |row, agg|
¡agg.increment!
agg.incrementage!(fila['Edad'].to_i)
end

puts "Total: #{agregado.total}"
puts "Edad media: #{edad_media_agregada}"

Creo que está mucho más claro.

Resumen

Hemos escrito más código, pero nuestros detalles de nivel inferior se extraen a la clase separada. Ahora el script principal se lee mucho mejor.

Por supuesto, se puede argumentar que el ejemplo es demasiado simple para poner tanto esfuerzo en la refactorización, pero vamos - es sólo un ejemplo ;). Si tuvieras que agregar más datos, tales objetos agregadores son realmente el camino a rescatar.

bandera de cooperación

Más información:

Ventajas e inconvenientes del desarrollo de software con Ruby

Ferrocarriles y otros medios de transporte

Desarrollo Rails con TMUX, Vim, Fzf + Ripgrep

Artículos relacionados

Fintech

5 ejemplos del mejor uso de Ruby

¿Te has preguntado alguna vez qué podemos hacer con Ruby? Bueno, el cielo es probablemente el límite, pero estaremos encantados de hablar de algunos casos más o menos conocidos...

The Codest
Pawel Muszynski Software Engineer
Desarrollo de software

Contratación de desarrolladores internos o externos

¿Contratación interna o externa? Es el dilema definitivo. Descubra las ventajas de outsourcing o de crear un equipo interno en el siguiente artículo.

The Codest
Grzegorz Rozmus Jefe de unidad Java
Desarrollo de software

Historia de éxito de The Codest: De desarrollador de Ruby a líder de clases magistrales

Conozca a Tomasz Szkaradek, Jefe de Operaciones de Personal en The Codest. Descubra la trayectoria profesional de Tomek: de gestor de Ruby a miembro del grupo central. Cómo consiguió...

The Codest
Tomasz Szkaradek Arquitecto de desarrollo
Desarrollo de software

Más información sobre Ruby on Rails con Pub/Sub

Pub/Sub puede aportar muchos beneficios al proyecto - puede hacer que el código sea limpio, desacoplar servicios y hacerlos fácilmente escalables. Más información sobre Pub/Sub en el siguiente artículo...

The Codest
Michal Pawlak Desarrollador Ruby senior

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

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

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

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