Skip to content

Instantly share code, notes, and snippets.

@rui314
Last active June 7, 2022 15:08
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rui314/8b9d71108708087562fb2192ccf7b61d to your computer and use it in GitHub Desktop.
Save rui314/8b9d71108708087562fb2192ccf7b61d to your computer and use it in GitHub Desktop.
# 最初になにをやるのかをコメントで書いておくとコードがぐっとわかりやすくなります。
# コードを書いているときは「ここでは〇〇をやろう」と考えながら書いているわけだけど、
# いったんコードになってしまうとそのメタな情報はなくなってしまうので、
# 読者は「結局これは何をやっているのか」というのを推測しながら読むことになってしまいます。
# コメントで意図を説明しておけば推測に頼らずにすむし、変なコードがあっても意図通り
# なのかバグなのか判別がつきやすい。
#
# なおこれはトップレベルのメソッドです。どういうレイアウトがいいかは
# 他にどんなコードがあるかによりますが、元々の例では単体のこのコードしかないので、
# 単純に引数の合計を計算するだけのものにクラスは不要でしょう。
# このメソッドでは要するに条件に合致する注文を足し算するだけなので、
# それ以上難しくすることはせずにやるべきことをそのまま書きます。
#
# 合計は単純なループで計算しています。他の書き方もできますがループが簡潔にして十分。
#
# あとは細かい点ですが、>=と<=を使うのではなく不等号記号の向きを
# 揃えておくと数直線でイメージできるのでわかりやすいような。
# これは私だけかもしれませんが。
# 日付の範囲内の注文の合計額を返す。
def total_sales(orders, start_date, end_date)
sum = 0
orders.each do |order|
if start_date <= order.placed_at && order.placed_at <= end_date
sum += order.amount
end
end
sum
end
class Order < OpenStruct
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment