window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } 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: The Codest: Kas kasutada või mitte kasutada - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2022-07-12
Tarkvaraarendus

Hash: Kas kasutada või mitte kasutada

The Codest

Krzysztof Buszewicz

Vanem Software Engineer

Lugege meie Ruby Expert'i artiklit ja saate teada, miks te ei pea alati youse hash.

Sissejuhatus

Kui me tahame koondada midagi, kasutame väga sageli #each_with_object_object või pikendada tavalist loop kasutades #with_object. Kuid enamasti Ruby arendajad kasutavad agregaatorina tavalist hash'i ja võib-olla on see hea, kuid selles artiklis tahaksin teile näidata, et see ei pea alati olema hash.

Juhtum

Eeldame, et kõik failid on paigutatud ühte kataloogi (inimesed).

Oletame, et meil on järgmine people/people.csv file:

 Eesnimi,Perekonnanimi,Vanus
 John,Doe,24
 Jane,Dee,45
 Josh,Bee,55
 Andrea,Boya,34
 Andrew,Moore,54

Me tahame leida ridade kogusumma ja keskmise vanuse - me võiksime kirjutada järgmise skripti:

people/parser.rb

require 'csv'

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

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

puts "Total: #{total}"
puts "Keskmine vanus: #{average_age}"

Ja jah, see teeb asja, kuid lugedes sellist kood on kahtlane rõõm. See tundub liiga madalal tasemel. Me saame seda parandada, pakkudes spetsiaalset agregaatorit loop.

people/age_aggregator.rb

class AgeAggregator
attrreader :total, :totalage

def initialize
@total = 0
@total_age = 0
end

def increment!
@total += 1
end

def incrementage!(age)
@totalage += age
end

def averageage
totalage.to_f / total
end
end

Ja siis näeb meie tsükkel välja nagu allpool:

people/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)
end

puts "Kokku: #{aggregated.total}"
puts "Keskmine vanus: #{aggregated.average_age}"

Ma arvan, et see on palju selgem.

Kokkuvõte

Oleme kirjutanud rohkem koodi, kuid meie madalama taseme detailid on eraldatud eraldi klassi. Nüüd loeb põhiskript palju paremini.

Loomulikult võite väita, et näide on liiga lihtne, et nii palju vaeva näha ümbertöötlemisega, kuid see on ju ainult näide ;). Kui sul oleks vaja rohkem andmeid agregeerida, siis on sellised agregaatorobjektid tõesti päästevahend.

koostööbänner

Loe edasi:

Ruby tarkvaraarenduse plussid ja miinused

Rööpad ja muud transpordivahendid

Railsi arendamine TMUX, Vim, Fzf + Ripgrep abil

Seotud artiklid

Fintech

5 näidet Ruby parimast kasutamisest

Kas olete kunagi mõelnud, mida me saame teha Ruby'ga? Noh, taevas on ilmselt piirideta, kuid me räägime hea meelega mõnest rohkem või vähem teadaolevast juhtumist...

The Codest
Pawel Muszynski Software Engineer
Tarkvaraarendus

Sise- vs. välisarendajate palkamine

Palgata sisemiselt või väljastpoolt? See on ülim dilemma! Järgnevast artiklist saate teada outsourcing eelised või ettevõttesisese meeskonna moodustamise eelised.

The Codest
Grzegorz Rozmus Java üksuse juht
Tarkvaraarendus

The Codest edulugu: Ruby Devist meistriklassi juhiks

Tutvuge Tomasz Szkaradekiga - The Codest personaliosakonna juhataja. Avastage Tomeki karjääritee Ruby Managerist tuumikrühma liikmeks. Kuidas tal õnnestus...

The Codest
Tomasz Szkaradek Arendusarhitekt
Tarkvaraarendus

Lisateave Ruby on Rails ja Pub/Sub kohta

Pub/Sub võib tuua projektile palju kasu - see võib muuta koodi puhtaks, lahutada teenuseid ja muuta need kergesti skaleeritavaks. Lisateave Pub/Subi kohta järgmises artiklis...

The Codest
Michal Pawlak Ruby vanem arendaja

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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