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 υπάρχει ήδη') } 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
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2022-07-12
Ανάπτυξη λογισμικού

Hash: Χρήση ή μη χρήση

The Codest

Krzysztof Buszewicz

Ανώτερος Software Engineer

Διαβάστε ένα άρθρο που προέρχεται από τον Ειδικό μας για τη Ruby και μάθετε γιατί δεν χρειάζεται να χρησιμοποιείτε πάντα youse hash.

Εισαγωγή

Όταν θέλουμε να συγκεντρώσουμε κάποια πράγματα, πολύ συχνά χρησιμοποιούμε το 1TP65Διδάσκω_με_αντικείμενο ή να επεκτείνετε την κανονική βρόχος χρησιμοποιώντας το #με_αντικείμενο. Αλλά στις περισσότερες περιπτώσεις Προγραμματιστές Ruby χρησιμοποιείτε έναν απλό κατακερματισμό ως συσσωρευτή και ίσως είναι μια χαρά, αλλά σε αυτό το άρθρο, θα ήθελα να σας δείξω ότι δεν χρειάζεται πάντα να είναι κατακερματισμός.

Υπόθεση

Υποθέτουμε ότι όλα τα αρχεία είναι τοποθετημένα σε έναν κατάλογο (άνθρωποι).

Ας πούμε ότι έχουμε τα εξής people/people.csv file:

 Όνομα,Επώνυμο,Ηλικία
 John,Doe,24
 Jane,Dee,45
 Josh,Bee,55
 Andrea,Boya,34
 Andrew,Moore,54

Θέλουμε να βρούμε το σύνολο των γραμμών και τον μέσο όρο ηλικίας - θα μπορούσαμε να γράψουμε το ακόλουθο σενάριο:

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

puts "Total: #{total}"
puts "Μέση ηλικία: #{average_age}"

Και ναι, κάνει το πράγμα, αλλά διαβάζοντας ένα τέτοιο κωδικός είναι μια αμφίβολη ευχαρίστηση. Αισθάνεται σαν ένα πολύ χαμηλό επίπεδο. Μπορούμε να το βελτιώσουμε παρέχοντας έναν αποκλειστικό συγκεντρωτή για το βρόχος.

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

Και τότε ο βρόχος μας θα έχει την παρακάτω μορφή:

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 "Σύνολο: #{aggregated.total}"
puts "Μέση ηλικία: #{aggregated.average_age}"

Νομίζω ότι είναι πολύ πιο σαφές.

Περίληψη

Έχουμε γράψει περισσότερο κώδικα, αλλά οι λεπτομέρειες χαμηλότερου επιπέδου εξάγονται στην ξεχωριστή κλάση. Τώρα το κύριο σενάριο διαβάζεται πολύ καλύτερα.

Φυσικά, μπορείτε να ισχυριστείτε ότι το παράδειγμα είναι πολύ απλό για να καταβάλλετε τόση προσπάθεια για αναδιαμόρφωση, αλλά ελάτε τώρα - είναι απλώς ένα παράδειγμα ;). Αν έπρεπε να συγκεντρώσετε περισσότερα δεδομένα, τέτοια αντικείμενα συνάθροισης είναι πραγματικά ο τρόπος διάσωσης.

πανό συνεργασίας

Διαβάστε περισσότερα:

Πλεονεκτήματα και μειονεκτήματα της ανάπτυξης λογισμικού Ruby

Σιδηρόδρομοι και άλλα μέσα μεταφοράς

Ανάπτυξη Rails με TMUX, Vim, Fzf + Ripgrep

Σχετικά άρθρα

Fintech

5 παραδείγματα της καλύτερης χρήσης της Ruby

Αναρωτηθήκατε ποτέ τι μπορούμε να κάνουμε με τη Ruby; Λοιπόν, ο ουρανός είναι μάλλον το όριο, αλλά είμαστε στην ευχάριστη θέση να μιλήσουμε για μερικές περισσότερο ή λιγότερο γνωστές περιπτώσεις...

The Codest
Pawel Muszynski Software Engineer
Ανάπτυξη λογισμικού

Πρόσληψη εσωτερικών έναντι εξωτερικών προγραμματιστών

Πρόσληψη εσωτερικά ή εξωτερικά; Είναι ένα απόλυτο δίλημμα! Μάθετε τα πλεονεκτήματα της outsourcing ή της δημιουργίας μιας εσωτερικής ομάδας στο ακόλουθο άρθρο.

The Codest
Grzegorz Rozmus Επικεφαλής μονάδας Java
Ανάπτυξη λογισμικού

Η ιστορία επιτυχίας του The Codest: από Ruby Dev σε Masterclass Leader

Γνωρίστε τον Tomasz Szkaradek - Επικεφαλής των ανθρώπινων δραστηριοτήτων στο The Codest. Ανακαλύψτε τη διαδρομή της καριέρας του Tomek από Ruby Manager σε μέλος της βασικής ομάδας. Πώς τα κατάφερε...

The Codest
Tomasz Szkaradek Αρχιτέκτονας ανάπτυξης
Ανάπτυξη λογισμικού

Μάθετε περισσότερα για το Ruby on Rails με Pub/Sub

Το Pub/Sub μπορεί να προσφέρει πολλά οφέλη στο έργο - μπορεί να κάνει τον κώδικα καθαρό, να αποσυνδέσει τις υπηρεσίες και να τις κάνει εύκολα επεκτάσιμες. Μάθετε περισσότερα για το Pub/Sub στο ακόλουθο άρθρο...

The Codest
Michal Pawlak Ανώτερος προγραμματιστής Ruby

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    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 etEstonian elGreek