window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } 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: Käytetäänkö vai ei - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2022-07-12
Ohjelmistokehitys

Hash: Hash: Käytetäänkö vai eikö käytetä

Codest

Krzysztof Buszewicz

Vanhempi Software Engineer

Lue Ruby-asiantuntijamme artikkeli ja opi, miksi sinun ei tarvitse aina youse hash.

Johdanto

Kun haluamme koota jotakin, käytämme hyvin usein 1TP61Opeta_esineellä_opettaminen tai laajentaa säännöllistä silmukka käyttämällä #kohteen kanssa. Mutta useimmissa tapauksissa Ruby-kehittäjät käyttävät pelkkää hash-tietoa aggregaattorina, ja ehkä se on hyvä, mutta tässä artikkelissa haluan näyttää, että sen ei aina tarvitse olla hash-tieto.

Tapaus

Oletamme, että kaikki tiedostot on sijoitettu yhteen hakemistoon (ihmiset).

Sanotaan, että meillä on seuraavat tiedot ihmiset/ihmiset.csv file:

 Etunimi,Sukunimi,Ikä
 John,Doe,24
 Jane,Dee,45
 Josh,Bee,55
 Andrea,Boya,34
 Andrew,Moore,54

Haluamme löytää rivien kokonaismäärän ja keski-ikä - voimme kirjoittaa seuraavan skriptin:

people/parser.rb

vaadi '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 = aggregated[:total]
averageage = aggregated[:totalage].to_f / total

puts "Total: #{total}"
puts "Keskimääräinen ikä: #{average_age}"

Ja kyllä, se tekee asian, mutta lukeminen tällainen koodi on epäilyttävä ilo. Se tuntuu liian alhaiselta tasolta. Voimme parantaa sitä tarjoamalla oman aggregaattorin silmukka.

people/age_aggregator.rb

luokka AgeAggregator
attrreader :total, :totalage

def initialize
@total = 0
@total_age = 0
end

def increment!
@total += 1
end

def incrementage!(ikä)
@totalage += ikä
end

def averageage
totalage.to_f / total
end
end

Silmukan ulkoasu on sitten seuraava:

people/parser.rb

vaadi '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 "Yhteensä: #{aggregated.total}"
puts "Keski-ikä: #{aggregated.average_age}"

Mielestäni se on paljon selkeämpi.

Yhteenveto

Olemme kirjoittaneet enemmän koodia, mutta alemman tason yksityiskohdat on siirretty erilliseen luokkaan. Nyt pääkomentosarjaa voi lukea paljon paremmin.

Voit tietysti väittää, että esimerkki on liian yksinkertainen, jotta sen korjaamiseen kannattaisi nähdä niin paljon vaivaa, mutta se on vain esimerkki ;). Jos sinun pitäisi aggregoida enemmän tietoja, tällaiset aggregaattoriobjektit ovat todella oikea tapa pelastaa.

yhteistyöbanneri

Lue lisää:

Ruby-ohjelmistokehityksen hyvät ja huonot puolet

Kiskot ja muut liikennevälineet

Rails-kehitys TMUX, Vim, Fzf + Ripgrep -ohjelmilla

Aiheeseen liittyvät artikkelit

Fintech

5 esimerkkiä Rubyn parhaasta käytöstä

Oletko koskaan miettinyt, mitä voimme tehdä Rubylla? No, taivas on luultavasti rajana, mutta puhumme mielellämme muutamista enemmän tai vähemmän tunnetuista tapauksista....

Codest
Pawel Muszynski Software Engineer
Ohjelmistokehitys

Sisäisten vs. ulkoisten kehittäjien palkkaaminen

Palkkaaminen sisäisesti vai ulkoisesti? Se on äärimmäinen dilemma! Lue seuraavasta artikkelista, mitä etuja on ulkoistamisen tai sisäisen tiimin rakentamisen välillä.

Codest
Grzegorz Rozmus Java-yksikön johtaja
Ohjelmistokehitys

The Codest:n menestystarina: Ruby Devistä mestarikurssin johtajaksi

Tapaa Tomasz Szkaradek - The Codest:n henkilöstöpäällikkö. Tutustu Tomekin urapolkuun Ruby Managerista ydinryhmän jäseneksi. Miten hän onnistui...

Codest
Tomasz Szkaradek Kehitysarkkitehti
Ohjelmistokehitys

Lisätietoja Ruby on Rails with Pub/Sub -laitteesta

Pub/Sub voi tuoda monia etuja projektille - se voi tehdä koodista siistiä, irrottaa palvelut toisistaan ja tehdä niistä helposti skaalautuvia. Lue lisää Pub/Subista seuraavasta artikkelista....

Codest
Michal Pawlak Vanhempi Ruby-kehittäjä

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

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