window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } 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: Usare o non usare - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2022-07-12
Sviluppo di software

Hash: Usare o non usare

The Codest

Krzysztof Buszewicz

Senior Software Engineer

Leggete l'articolo del nostro esperto di Ruby e scoprite perché non è necessario avere sempre questi hashish.

Introduzione

Quando si vuole aggregare qualcosa, molto spesso si usa il metodo 1TP63Insegnare_con_oggetto o estendere il regolare anello utilizzando #con_oggetto. Ma nella maggior parte dei casi Sviluppatori Ruby si usa un semplice hash come aggregatore e forse va bene, ma in questo articolo vorrei mostrarvi che non sempre deve essere un hash.

Caso

Si presume che tutti i file siano collocati in una directory (persone).

Supponiamo di avere quanto segue persone/persone.csv file:

 Nome, Cognome, Età
 John,Doe,24
 Jane,Dee,45
 Josh,Bee,55
 Andrea,Boya,34
 Andrea,Moore,54

Se vogliamo trovare il totale delle righe e l'età media, possiamo scrivere il seguente script:

people/parser.rb

richiedere 'csv'

aggregato = CSV.foreach('people.csv', headers: true)
.withobject({ total: 0, totalage: 0 }) do |row, agg|
agg[:total] += 1
agg[:totalage] += riga['Età'].toi
fine

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

mette "Totale: #{totale}"
puts "Età media: #{età_media}"

E sì, fa il suo dovere, ma la lettura di tale codice è un piacere dubbio. Sembra un livello troppo basso. Possiamo migliorarlo fornendo un aggregatore dedicato per il anello.

people/age_aggregator.rb

classe AgeAggregator
attrreader :total, :totalage

def initialize
@totale = 0
@età_totale = 0
fine

def incremento!
@totale += 1
fine

def incremento!(età)
@totale += età
fine

def averageage
totalage.to_f / totale
fine
fine

Il nostro ciclo sarà quindi come quello che segue:

people/parser.rb

richiedere 'csv'
requirerelative './ageaggregator.rb'

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

mette "Totale: #{aggregato.totale}".
puts "Età media: #{età_media_aggregata}"

Penso che sia molto più chiaro.

Sintesi

Abbiamo scritto più codice, ma i dettagli di livello inferiore sono stati estratti in una classe separata. Ora lo script principale si legge molto meglio.

Certo, si può obiettare che l'esempio è troppo semplice per impegnarsi così tanto nella rifattorizzazione, ma suvvia, è solo un esempio ;). Se si dovessero aggregare più dati, questi oggetti aggregatori sono davvero la via di salvezza.

banner di cooperazione

Per saperne di più:

Pro e contro dello sviluppo software in Ruby

Rotaie e altri mezzi di trasporto

Sviluppo di Rails con TMUX, Vim, Fzf + Ripgrep

Articoli correlati

Fintech

5 esempi di utilizzo ottimale di Ruby

Vi siete mai chiesti cosa possiamo fare con Ruby? Beh, il cielo è probabilmente il limite, ma siamo felici di parlare di alcuni casi più o meno noti...

The Codest
Pawel Muszynski Software Engineer
Sviluppo di software

Assumere sviluppatori interni o esterni

Assumere internamente o esternamente? È il dilemma finale! Scoprite i vantaggi di outsourcing o di creare un team interno nel seguente articolo.

The Codest
Grzegorz Rozmus Capo unità Java
Sviluppo di software

La storia di successo di The Codest: Da sviluppatore Ruby a leader di masterclass

Incontrate Tomasz Szkaradek - Responsabile delle operazioni con le persone presso The Codest. Scoprite il percorso professionale di Tomek, da Ruby Manager a membro del gruppo centrale. Come è riuscito a...

The Codest
Tomasz Szkaradek Architetto dello sviluppo
Sviluppo di software

Ulteriori informazioni su Ruby on Rails con Pub/Sub

Pub/Sub può portare molti vantaggi al progetto: può rendere il codice pulito, disaccoppiare i servizi e renderli facilmente scalabili. Per saperne di più su Pub/Sub, consultate il seguente articolo...

The Codest
Michal Pawlak Sviluppatore Ruby senior

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

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