window.pipedriveLeadboosterConfig={です。 ベース:'leadbooster-chat.pipedrive.com'、 companyId:11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2、 } ;(function () { var w = window もし (w.LeadBooster) {なら console.warn('LeadBooster already exists') } else { w.LeadBooster = { {. q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 関数 (n) { { this.q.push({ t: 'o', n: n, h: h }) this.q.push({ t: 't', n: n }) }, } } })() ハッシュ使うべきか、使わざるべきか - The Codest
The Codest
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 産業
    • フィンテック&バンキング
    • E-commerce
    • アドテック
    • ヘルステック
    • 製造業
    • 物流
    • 自動車
    • アイオーティー
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
戻る矢印 戻る
2022-07-12
ソフトウェア開発

ハッシュ使うべきか、使わざるべきか

The Codest

クシシュトフ・ブシェビッチ

シニア Software Engineer

Rubyのエキスパートによる記事を読んで、これらのハッシュを常に使用する必要がない理由を学びましょう。

はじめに

あるものを集計したいとき、私たちはよく 1TP63オブジェクトを使って教える または通常の ループ 使用して #オブジェクト付き.しかし、ほとんどの場合 Ruby開発者 しかしこの記事では、必ずしもハッシュである必要はないことを紹介したい。

ケース

ここでは、すべてのファイルが1つのディレクトリ(人々).

例えば、次のような場合だ。 人々/人々.csv file:

 名,姓,年齢
 ジョン,ドウ,24
 ジェーン,ディー,45
 ジョシュ,ビー,55
 アンドレア,ボヤ,34
 アンドリュー,ムーア,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
終了

total = aggregated[:total]
平均年齢 = 集計[:totalage].to_f / total

puts "合計: #{total}"
puts "平均年齢: #{average_age}"

そして、それはその通りなのだが、そのようなものを読むのは コード は疑わしい喜びだ。レベルが低すぎるように感じる。の専用アグリゲーターを用意すれば改善できる。 ループ.

people/age_aggregator.rb

クラス AgeAggregator
attrreader :total, :totalage

def initialize
合計 = 0
トータルエイジ = 0
終了

def increment!
合計 += 1
終了

def incrementage!(age)
総計 += 年齢
end

def averageage
totalage.to_f / total
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['年齢'].to_i)
終了

puts "合計: #{aggregated.total}"
puts "平均年齢: #{aggregated.average_age}" "

より明確になったと思う。

概要

私たちはより多くのコードを書いたが、低レベルの詳細は別のクラスに抽出されている。これで、メインのスクリプトはずっと読みやすくなった。

もちろん、リファクタリングに労力を費やすには、この例はシンプルすぎるという意見もあるだろうが、それは単なる例だ。)より多くのデータを集約する必要があるのなら、このようなアグリゲーター・オブジェクトが本当に助けになる。

協力バナー

続きを読む

Rubyソフトウェア開発の長所と短所

レールおよびその他の輸送手段

TMUX、Vim、Fzf + RipgrepによるRails開発

関連記事

フィンテック

Rubyの5つの活用例

Rubyで何ができるのだろうと思ったことはないだろうか。まあ、可能性は無限大でしょうが、多少なりとも知られている事例についてお話しできれば幸いです。

The Codest
パヴェル・ムジンスキー Software Engineer
ソフトウェア開発

内部開発者と外部開発者の雇用

社内採用か社外採用か?それは究極のジレンマだ!以下の記事で、outsourcingと社内チーム構築のメリットをご確認ください。

The Codest
グジェゴシュ・ロズムス Javaユニットリーダー
ソフトウェア開発

The Codestのサクセスストーリー:Ruby開発者からマスタークラスのリーダーへ

The Codestのピープル・オペレーション責任者、トマシュ・シュカラデクをご紹介します。ルビー・マネージャーからコア・グループの一員となったトメックのキャリア・ジャーニーをご覧ください。彼はどのようにして...

The Codest
トマシュ・シュカラデク 開発アーキテクト
ソフトウェア開発

パブ/サブ付きRuby on Railsについてさらに詳しく

Pub/Subはプロジェクトに多くの利点をもたらします - コードをクリーンにし、サービスを分離し、簡単にスケーラブルにすることができます。Pub/Subについては以下の記事で詳しく説明しています。

The Codest
ミハエル・パウラック シニアRubyデベロッパー

ナレッジベースを購読して、IT部門の専門知識を常に最新の状態に保ちましょう。

    会社概要

    The Codest - ポーランドに技術拠点を持つ国際的なソフトウェア開発会社。

    イギリス - 本社

    • オフィス 303B, 182-184 High Street North E6 2JA
      イギリス、ロンドン

    ポーランド - ローカル・テック・ハブ

    • ファブリチュナ・オフィスパーク、アレハ
      ポコジュ18、31-564クラクフ
    • ブレイン・エンバシー, コンストルクトースカ
      11, 02-673 Warsaw, Poland

      The Codest

    • ホーム
    • 会社概要
    • サービス
    • Case Studies
    • ノウハウ
    • 採用情報
    • 辞書

      サービス

    • アドバイザリー
    • ソフトウェア開発
    • バックエンド開発
    • フロントエンド開発
    • Staff Augmentation
    • バックエンド開発者
    • クラウドエンジニア
    • データエンジニア
    • その他
    • QAエンジニア

      リソース

    • 外部ソフトウェア開発パートナーとの協力に関する事実と神話
    • 米国から欧州へ:アメリカの新興企業がヨーロッパへの移転を決断する理由
    • テックオフショア開発ハブの比較:テックオフショア ヨーロッパ(ポーランド)、ASEAN(フィリピン)、ユーラシア(トルコ)
    • CTOとCIOの課題は?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • ウェブサイト利用規約

    著作権 © 2025 by The Codest。無断複写・転載を禁じます。

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