Last active
June 7, 2022 15:08
-
-
Save rui314/8b9d71108708087562fb2192ccf7b61d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 最初になにをやるのかをコメントで書いておくとコードがぐっとわかりやすくなります。 | |
# コードを書いているときは「ここでは〇〇をやろう」と考えながら書いているわけだけど、 | |
# いったんコードになってしまうとそのメタな情報はなくなってしまうので、 | |
# 読者は「結局これは何をやっているのか」というのを推測しながら読むことになってしまいます。 | |
# コメントで意図を説明しておけば推測に頼らずにすむし、変なコードがあっても意図通り | |
# なのかバグなのか判別がつきやすい。 | |
# | |
# なおこれはトップレベルのメソッドです。どういうレイアウトがいいかは | |
# 他にどんなコードがあるかによりますが、元々の例では単体のこのコードしかないので、 | |
# 単純に引数の合計を計算するだけのものにクラスは不要でしょう。 | |
# このメソッドでは要するに条件に合致する注文を足し算するだけなので、 | |
# それ以上難しくすることはせずにやるべきことをそのまま書きます。 | |
# | |
# 合計は単純なループで計算しています。他の書き方もできますがループが簡潔にして十分。 | |
# | |
# あとは細かい点ですが、>=と<=を使うのではなく不等号記号の向きを | |
# 揃えておくと数直線でイメージできるのでわかりやすいような。 | |
# これは私だけかもしれませんが。 | |
# 日付の範囲内の注文の合計額を返す。 | |
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