window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } 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: Verwenden oder nicht verwenden - The Codest
Der Codest
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Branchen
    • Fintech & Bankwesen
    • E-commerce
    • Adtech
    • Gesundheitstechnik
    • Herstellung
    • Logistik
    • Automobilindustrie
    • IOT
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
Pfeil zurück ZURÜCK
2022-07-12
Software-Entwicklung

Haschisch: Verwenden oder nicht verwenden

Der Codest

Krzysztof Buszewicz

Senior Software Engineer

Lesen Sie einen Artikel von unserem Ruby-Experten und erfahren Sie, warum Sie nicht immer Ihren Hash verwenden müssen.

Einführung

Wenn wir etwas aggregieren wollen, verwenden wir sehr oft 1TP61Unterrichten_mit_Objekt oder erweitern Sie die reguläre Schleife mit #mit_Objekt. Aber in den meisten Fällen Ruby-Entwickler verwenden einen einfachen Hash als Aggregator und vielleicht ist das in Ordnung, aber in diesem Artikel möchte ich Ihnen zeigen, dass es nicht immer ein Hash sein muss.

Fall

Wir gehen davon aus, dass sich alle Dateien in einem Verzeichnis befinden (Menschen).

Nehmen wir an, wir haben Folgendes menschen/menschen.csv file:

 Vorname,Nachname,Alter
 John,Doe,24
 Jane,Dee,45
 Josh,Biene,55
 Andrea,Boya,34
 Andrew,Moore,54

Wir wollen die Gesamtzahl der Zeilen und das Durchschnittsalter ermitteln - wir könnten das folgende Skript schreiben:

people/parser.rb

require 'csv'

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

total = aggregiert[:total]
Durchschnittsalter = aggregiert[:Gesamtalter].to_f / gesamt

puts "Gesamt: #{Gesamt}"
puts "Durchschnittsalter: #{Durchschnittsalter}"

Und ja, das tut es auch, aber das Lesen eines solchen Code ist ein zweifelhaftes Vergnügen. Es fühlt sich wie ein zu niedriges Niveau an. Wir können es verbessern, indem wir einen speziellen Aggregator für die Schleife.

people/age_aggregator.rb

Klasse AgeAggregator
attrreader :total, :totalage

def initialisieren
@total = 0
@gesamt_alter = 0
end

def inkrementieren!
@gesamtzahl += 1
end

def incrementage!(Alter)
@Gesamtmenge += Alter
end

def durchschnittssumme
gesamtsumme.to_f / gesamt
end
end

Dann würde unsere Schleife wie folgt aussehen:

people/parser.rb

require 'csv'
requirerelativ './ageaggregator.rb'

aggregated = CSV.foreach('people.csv', headers: true)
.withobject(AgeAggregator.new) do |row, agg|
agg.increment!
agg.incrementage!(Zeile['Alter'].bis_i)
end

puts "Gesamt: #{aggregiert.gesamt}"
puts "Durchschnittliches Alter: #{aggregiert.durchschnittliches_Alter}"

Ich denke, das ist viel klarer.

Zusammenfassung

Wir haben mehr Code geschrieben, aber unsere Details auf niedrigerer Ebene sind in eine separate Klasse ausgelagert. Jetzt liest sich das Hauptskript viel besser.

Natürlich kann man argumentieren, dass das Beispiel zu einfach ist, um so viel Aufwand in die Überarbeitung zu stecken, aber kommen Sie - es ist nur ein Beispiel ;). Wenn Sie mehr Daten aggregieren müssen, sind solche Aggregator-Objekte wirklich der Weg zur Rettung.

Kooperationsbanner

Lesen Sie mehr:

Vor- und Nachteile der Softwareentwicklung in Ruby

Eisenbahnen und andere Transportmittel

Rails-Entwicklung mit TMUX, Vim, Fzf + Ripgrep

Ähnliche Artikel

Fintech

5 Beispiele für die beste Verwendung von Ruby

Haben Sie sich jemals gefragt, was wir mit Ruby alles machen können? Nun, der Himmel ist wahrscheinlich die Grenze, aber wir sprechen gerne über einige mehr oder weniger bekannte Fälle...

Der Codest
Pawel Muszynski Software Engineer
Software-Entwicklung

Einstellung von internen vs. externen Entwicklern

Internes oder externes Personal einstellen? Das ist ein ultimatives Dilemma! Im folgenden Artikel erfahren Sie mehr über die Vorteile des Outsourcings oder des Aufbaus eines internen Teams.

Der Codest
Grzegorz Rozmus Leiter der Java-Abteilung
Software-Entwicklung

Die Erfolgsgeschichte von Codest: Vom Ruby-Entwickler zum Masterclass-Leiter

Lernen Sie Tomasz Szkaradek kennen - Leiter der Abteilung People Operations bei The Codest. Erfahren Sie mehr über Tomeks beruflichen Werdegang vom Ruby Manager zum Mitglied der Kerngruppe. Wie hat er es geschafft...

Der Codest
Tomasz Szkaradek Architekt für Entwicklung
Software-Entwicklung

Erfahren Sie mehr über Ruby on Rails mit Pub/Sub

Pub/Sub kann viele Vorteile für das Projekt bringen - es kann den Code sauber machen, Dienste entkoppeln und sie leicht skalierbar machen. Erfahren Sie mehr über Pub/Sub im folgenden Artikel...

Der Codest
Michal Pawlak Senior Ruby-Entwickler

Abonnieren Sie unsere Wissensdatenbank und bleiben Sie auf dem Laufenden über das Fachwissen aus dem IT-Sektor.

    Über uns

    The Codest - Internationales Software-Unternehmen mit technischen Zentren in Polen.

    Vereinigtes Königreich - Hauptsitz

    • Büro 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale Tech-Hubs

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      Der Codest

    • Startseite
    • Über uns
    • Dienstleistungen
    • Fallstudien
    • Gewusst wie
    • Karriere
    • Wörterbuch

      Dienstleistungen

    • IT-Beratung
    • Software-Entwicklung
    • Backend-Softwareentwicklung
    • Frontend-Softwareentwicklung
    • Staff Augmentation
    • Backend-Entwickler
    • Cloud-Ingenieure
    • Daten-Ingenieure
    • Andere
    • QS-Ingenieure

      Ressourcen

    • Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner
    • Aus den USA nach Europa: Warum entscheiden sich amerikanische Start-ups für eine Verlagerung nach Europa?
    • Tech Offshore Development Hubs im Vergleich: Tech Offshore Europa (Polen), ASEAN (Philippinen), Eurasien (Türkei)
    • Was sind die größten Herausforderungen für CTOs und CIOs?
    • Der Codest
    • Der Codest
    • Der Codest
    • Privacy policy
    • Website terms of use

    Urheberrecht © 2025 von The Codest. Alle Rechte vorbehalten.

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