これの規則は何ですか?
私は次のスタイルを使用しますが、最後にドットを逃した場合、それを認識せずに多くの問題に遭遇する可能性があるため、それが好ましいスタイルであるかどうかはわかりません。
query = reservations_scope.for_company(current_company).joins{property.development}.
group{property.development.id}.
group{property.development.name}.
group{property.number}.
group{created_at}.
group{price}.
group{reservation_path}.
group{company_id}.
group{user_id}.
group{fee_paid_date}.
group{contract_exchanged_date}.
group{deposit_paid_date}.
group{cancelled_date}.
select_with_reserving_agent_name_for(current_company, [
"developments.id as dev_id",
"developments.name as dev_name",
"properties.number as prop_number",
"reservations.created_at",
"reservations.price",
"reservations.fee_paid_date",
"reservations.contract_exchanged_date",
"reservations.deposit_paid_date",
"reservations.cancelled_date"
]).reorder("developments.name")
query.to_a # ....
chainingメソッドの規則は何ですか複数行と私は好むべきですか?
[〜#〜] note [〜#〜]: Rubyコーディングスタイルガイド から良い例が見つかりませんでした=。
Rubyスタイルガイド には実際にそのセクションがあります:
一貫した複数行のメソッドチェーンスタイルを採用します。 Rubyコミュニティには2つの人気のあるスタイルがあり、どちらも良いと考えられています-主要な
.
(オプションA)および末尾の.
(オプションB)。
(オプションA)別の行でチェーンメソッドの呼び出しを続行する場合、
.
2行目。# bad - need to consult first line to understand second line one.two.three. four # good - it's immediately clear what's going on the second line one.two.three .four
(オプションB)別の行でチェーンメソッドの呼び出しを続行する場合は、
.
最初の行で、式が継続することを示します。# bad - need to read ahead to the second line to know that the chain continues one.two.three .four # good - it's immediately clear that the expression continues beyond the first line one.two.three. four
両方の代替スタイルのメリットに関する議論は、 here にあります。
Ruby 1.9+では、次のように書くことができます。
query = reservations_scope
.for_company(current_company)
.joins{property.development}
.group{property.development.id}
.group{property.development.name}
.group{property.number}
.group{created_at}
.group{price}
.group{reservation_path}
.group{company_id}
.group{user_id}
もっと読みやすいと思います。
行末でドットを選択する理由は、IRBセッションにコードを貼り付けることができるからです。また、行の先頭にドットを使用すると、複数行のコードの途中で行をコメント化できません。読むべきよい議論はここにあります: https://github.com/bbatsov/Ruby-style-guide/pull/176